zoukankan      html  css  js  c++  java
  • Scala 方法和函数

    package com.bigdata
    
    //
    /** Scala 方法和函数:Scala中既有函数也有方法,大多数情况下我们都可以不去理会他们之间的区别。
      *
      * 方法:Scala 中的方法跟 Java 的方法一样,只是多了点语法糖。
      * 方法是组成类的一部分。方法有名字、类型签名,有时方法上还有注解,以及方法的功能实现代码(字节码)。
      *
      * 函数 :Scala 中的函数是一个完整的对象,是基于Function家族,0-22,一共23个Function Trait可以被使用,数字代表了Funtcion的入参个数
      * 作用:1.函数可以直接赋值给变量,可以让函数很方便的传递;
      *      2.闭包(closure),可以把灵活操作代码块,从而引申出其他灵活的语法
      *
      * apply 是 scala 中的语法糖:对一个对象 obj 上调用 obj(),scala 编译器会转换为 obj.apply();
      * 在一个类 clazz 上调用 clazz(),scala 编译器会转换为 clazz_company_obj.apply(),其中 clazz_company_obj 为 clazz 的伴生对象。
      *
      * 方法和函数的区别:
      * 1.方法不能作为单独的表达式而存在(参数为空的方法除外),而函数可以
      * 2.函数必须要有参数列表,而方法可以没有参数列表
      * 3.方法名是方法调用,而函数名只是代表函数对象本身+--
      * 4.在需要函数的地方,如果传递一个方法,会自动进行ETA展开(把方法转换为函数)
      * 5.传名参数本质上是个方法
      *
      */
    
    object Func {
    
      //比如无参方法在申明时可以不加括号,甚至在调用过程也不用加括号
      def f1 = 1 + 1
    
      //比如方法可以添加泛型规则,这在java中只能在类申明
      def f2[T](t: T) = {
        t
      }
    
      //本地方法,即方法中嵌套方法
      def method(): Unit = {
        def print(str: String): Unit = {
          println(str)
        }
    
        print("hello")
      }
    
      //一般采用下面方式定义函数
      val fun = (v1: Int, v2: Int) => v1 + v2
    
      def main(args: Array[String]): Unit = {
        println(f1)
        println(f2(1))
        method
    
        val s1 = fun(1,2)
        println(s1)
    
      }
    
    }
  • 相关阅读:
    网络需求分析课堂作业
    工程招标与投标课堂作业
    burpsuite Pro下载安装及破解 | JDK安装和配置
    渗透测试环境的搭建
    web应用基础架构
    为Linux环境安装图形化界面
    Linux基本操作
    markdown语法教程(更新中)
    VMware导入和删除虚拟机文件
    Java求幂集与List的浅拷贝深拷贝问题
  • 原文地址:https://www.cnblogs.com/shimingjie/p/10383279.html
Copyright © 2011-2022 走看看