我意識到下面的函數調用都是一樣的,但我不明白爲什麼。Scala如何理解不同格式的函數調用?
val list = List(List(1), List(2, 3), List(4, 5, 6))
list.map(_.length) // res0 = List(1,2,3) result of 1st call
list map(_.length) // res1 = List(1,2,3) result of 2nd call
list map (_.length) // res2 = List(1,2,3) result of 3rd call
我可以理解第一個呼叫,這只是一個普通的函數調用,因爲地圖是類List
的成員函數,但我不明白第二個和第三個呼叫。例如,在第三次調用中,Scala編譯器如何知道「(_.length)」是「map」的參數?編譯器如何知道「map」是「list」的成員函數?
@LuigiPlinge:哦,是的,謝謝。這是我的一個誤導性評論;刪除它。 –