zoukankan      html  css  js  c++  java
  • scala

    简单解释

    方法(method)
    在OOP中,方法作用于对象,是对象的行为,Java中的方法这样的,在Scala中的方法(method)也是如此,定义method的基本格式:
    def 方法名称(参数列表):返回值 = 方法体

    函数(function)
    在scala中,函数被看做是一等公民,定义函数基本格式:
    val f1 = (x: Int) => println(x) //打印
    val f2 = (x1: Int) => x1 + 4 //将原数据+4

    一些例子

    scala> def add3(x:Int) = x + 3
    add3: (x: Int)Int // 表示Method add3有一个参数Int型参数x,返回值是Int型.
    
    scala> add3(3)
    res0: Int = 6
    
    scala> val f1 = (x:Int) => x + 3
    f1: Int => Int = <function1> // 表示Function f1的method体接受一个Int型的参数,输出结果的类型是Int型。f1的类型是function1
    
    scala> f1(3)
    res1: Int = 6

    区别

    • 参数列表对method是可选的,对function是必须的(function参数列表可以为空)
    scala> def method = println("没有参数的方法")
    method: Unit
    
    scala> val function = () => println("没有参数的函数") // f2: () => Unit = <function0>
    scala> val function = => println("没有参数的函数") // 编译错误,参数列表可以为空,但不能省略
    
    • Method名意味着Method调用,Function名只是代表Function自身
    scala> method
    没有参数的方法
    
    scala> function
    res10: () => Unit = <function0>
    • 在需要function的地方可以提供一个method(它会自动转换成function,该行为被称为ETA expansion)
    // 高阶函数foreach接收的是一个函数,但也可以传入一个方法,scala会将这个方法自动转义成函数。
    // foreach是List对象的一个高阶函数,它接收一个函数,并应用于List中的每一个元素,而method是一个方法。
    def method(x: Any) = println(x)
    val list = List[String]("Scala", "Spark", "Java")
    list.foreach(method(_))

    注意:
    期望出现Function的地方,我们可以使用Method。
    不期望出现Function的地方,Method并不会自动转换成Function。

    在scala中操作符被解释成方法:

    前缀操作符:op obj 被解释称obj.op
    中缀操作符:obj1 op obj2被解释称obj1.op(obj2)
    后缀操作符:obj op被解释称obj.op

    可以在Method名后面加一个下划线强制变成Function。 注意: Method名与下划线之间至少有一个空格!!

    scala> def method1(x:Int) = { x + 84 }
    method1: (x: Int)Int
    
    scala> val function1 = method1 _
    function1: Int => Int = <function1>
    
    scala> function1(3)
    res5: Int = 87
    
    scala>
  • 相关阅读:
    服务器变量 $_SERVER 详解
    PHP 函数功能参考
    ecshop后台0day漏洞原理+利用方法 XSS+Getshll
    CSRF漏洞原理说明与利用方法
    Drupal 远程命令执行漏洞(CVE-2018-7600)
    SSH登陆验证绕过漏洞(cve-2018-10933)
    单元二:建立和维护数据表
    单元一:认识数据库系统
    【 模块1 认识计算机 】1.2 认识微型计算机
    【 模块1 认识计算机 】 1.1走进计算机世界
  • 原文地址:https://www.cnblogs.com/duchaoqun/p/d56aa807f7d592fc598bf8b5c7d8a8e6.html
Copyright © 2011-2022 走看看