类似于转化符号,=>
指明这个函数把左边的东西(任何整数x)转变成右边的东西(x + 1)。所以,这是一个把任何整数x映射为x + 1的函数。
例如:
var increase = (x: Int) => x + 1
increase(10)
res0: Int = 11
Scala中的=>
符号可以看做是创建函数实例的语法糖。例如:A => T
,A,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));
}
}