我總是想知道爲什麼有時使用函數文字我們甚至可以忽略大括號,即使對於多個語句。爲了說明這一點,多行函數文字的語法是用大括號括住語句。像這樣,多行函數字面量作爲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