我一直想知道为什么有时使用函数文字我们可以忽略大括号,即使是多个语句。为了说明这一点,多行函数字面量的语法是用花括号将语句括起来。像这样,
val fl = (x: Int) => {
println("Add 25 to "+x)
x + 25
}
但是,当您将其传递给单参数函数时,您可以忽略函数文字所需的大括号。
所以对于给定的函数 f,
def f( fl: Int => Int ) {
println("Result is "+ fl(5))
}
你可以像这样调用 f(),
f( x=> {
println("Add 25 to "+x)
x + 25
})
-------------------------
Add 25 to 5
Result: 30
或者,当您在函数调用中使用大括号而不是括号时,您可以从函数文字中删除内部大括号。所以下面的代码也可以工作,
f{ x=>
println("Add 25 to "+x)
x + 25
}
上面的代码更具可读性,我注意到很多示例都使用这种语法。但是,是否有任何我可能遗漏的特殊规则来解释为什么它按预期工作?