scala传递匿名函数简化的原则
以一下这个标准调用为例说明问题。
f((name: String) => {
println(name)
})
i、参数的类型可以省略,会根据形参进行自动的推导
f((name) => {
println(name)
})
ii、类型省略之后,如果只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过 1 的永远不能省略圆括号。
f( name => {
println(name)
})
iii、匿名函数如果只有一行,则大括号也可以省略
f( name => println(name) )
iv、如果参数只出现一次,则参数可以省略且后面的参数可以用_代替
f( println(_) )
推导:对于多个参数,但是参数只出现一次,那么每个参数可以使用_代替,但是下划线的顺序和参数的顺序是一一对应的。
v、如果可以推断出当前传入的表达式是一个函数体,而不是调用语句,可以直接省略下划线
f( println )