我总是想知道为什么有时使用函数文字我们甚至可以忽略大括号,即使对于多个语句。为了说明这一点,多行函数文字的语法是用大括号括住语句。像这样,多行函数字面量作为Scala中的参数
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
}
上面的代码更具可读性,我注意到很多示例都使用这种语法。但是,有没有我可能错过的特殊规则,来解释为什么这是按预期工作的?
这是我一直在寻找的解释。另外,除了突出显示的规格部分之外,还可以参考块(6.11)部分以便更好地理解。 – jafaeldon
Geat答案,我无法更好地解释它。 Upvoted它。干杯! – wleao