2016-06-21 32 views

回答

5

在第一種情況下,您正在使用二元運算符:\,其中0是唯一的參數。這會返回一個curried函數,您可以按照您的意願通過lambda _+_

第二種情況下,如果您使用:\作爲中綴運算符,則由於運算符優先級而失敗。斯卡拉首先嚐試評估(0)(_+_),給出錯誤Int(0) does not take parameters,因爲(0)不是函數。

爲了使用類似語法的第二個版本,您將需要添加一些括號:

scala> ((1 to 5) :\ 0)(_+_) 
res1: Int = 15 

正如順便說一句,每個運營商是Scala中的一個方法,可以像一個被使用:

scala> 2.+(3) 
res2: Int = 5 
+1

其實每個操作符都是scala中的一個方法。 –

+0

答案已經更新 –