scala中的下划线代替实参变量 ==> 分析一个乍看不知道在嘎哈的函数

//定义一个函数

scala> def multiple(func: Int => Int, a :Int) = {func(a)}
multiple: (func: Int => Int, a: Int)Int

//调用

scala> multiple((a:Int) => a+1,5)
res225: Int = 6

//自动类型推断,可以省略参数类型

scala> multiple((a) => a+1,5)
res229: Int = 6

//只有一个参数,可以省略圆括号

scala> multiple(a => a+1,5)
res230: Int = 6

//在执行中只被调用一次,参数可以用 _ (下划线)代替

scala> multiple(_+1,5)
res231: Int = 6

一个下划线可以代表这么大的信息量。。。也是挺有意思的。

================================================================

//把变量a换成一个常数 3,那么函数只要有一个函数参数就可以了

scala> def multiple(func: Int => Int) = {func(3)}
multiple: (func: Int => Int)Int

//调用, _ 就代表 3 

scala> multiple(_*2)
res232: Int = 6

scala> multiple(_+100)
res234: Int = 103

scala> multiple(1000+_)
res235: Int = 1003

乍一看 multiple(func: Int => Int) = {func(3)} 这个函数有点懵,不知道在嘎哈。 分析一下,明白了。

然后发现其实这个函数很好理解。就是要对 3 做点啥。函数体中就是直接在匿名函数中传入了一个固定的常量3作为参数而不再接收变量。

posted @ 2019-03-14 22:04  Rabbit624  阅读(222)  评论(0编辑  收藏  举报