• 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)
    
      }
    
    }
  • 相关阅读:
    VirtualBox安装及使用说明和虚拟机安装XP系统图文教程
    jbpm入门样例
    39个让你受益的HTML5教程
    JAVA反射机制
    怎样学好C语言,一个成功人士的心得!
    golang使用pprof检查goroutine泄露
    GridView编辑删除操作
    初识Servlet
    严苛模式(StrictMode)
    严苛模式(StrictMode)
  • 原文地址:https://www.cnblogs.com/shimingjie/p/10383279.html
Copyright © 2020-2023  润新知