Scala的=>作用

半兽人 发表于: 2016-09-08   最后更新时间: 2016-09-19 17:12:25  
{{totalSubscript}} 订阅, 9,496 游览

类似于转化符号,=> 指明这个函数把左边的东西(任何整数x)转变成右边的东西(x + 1)。所以,这是一个把任何整数x映射为x + 1的函数。

例如:

var increase = (x: Int) => x + 1  
increase(10)
res0: Int = 11

Scala中的=>符号可以看做是创建函数实例的语法糖。例如:A => TA,B => T表示一个函数的输入参数类型是“A”“A,B”,返回值类型是T。请看下面这个实例:

scala> val f: Int => String = myInt => "The value of myInt is: " + myInt.toString()
f: Int => String = <function1>

scala> println(f(3))
The value of myInt is: 3

上面例子定义函数f:输入参数是整数类型,返回值是字符串。

另外,() => T表示函数输入参数为空,而A => Unit则表示函数没有返回值。

在提供点例子,自己慢慢感悟函数式编程:

object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Int) => (y: Int) => x + y;
    println(b.apply(5).apply(6));

  }
}
更新于 2016-09-19

查看scala更多相关的文章或提一个关于scala的问题,也可以与我们一起分享文章