//定义一个函数
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 = 6scala> multiple(_+100)
res234: Int = 103scala> multiple(1000+_)
res235: Int = 1003乍一看 multiple(func: Int => Int) = {func(3)} 这个函数有点懵,不知道在嘎哈。 分析一下,明白了。
然后发现其实这个函数很好理解。就是要对 3 做点啥。函数体中就是直接在匿名函数中传入了一个固定的常量3作为参数而不再接收变量。