//定义一个函数
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作为参数而不再接收变量。
scala中的下划线代替实参变量 ==> 分析一个乍看不知道在嘎哈的函数
原文:https://www.cnblogs.com/rabbit624/p/10533874.html