2016-06-21 38 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

答案已经更新 –