加上不在Scala解释器中工作

时间:2011-12-01 05:06:12

标签: scala interpreter

我试图在Scala解释器中使用fold来汇总列表,但它一直给我一个奇怪的错误。当我输入时:

val list = List(1,2,3)
(list :\ 0)(+)

我希望得到6。但是,口译员说

error: illegal start of simple expression
(list :\ 0)(+)
             ^

如果我定义自己的功能

def plus(a: Int, b: Int) = a+b

并致电

(list :\ 0)(plus)

我确实得到6

我确信我在这里遗漏了一些非常简单的东西,但我无法弄明白,所以非常感谢任何帮助。

2 个答案:

答案 0 :(得分:10)

加号运算符本身不是一个函数,它是一个符号,没有类型。您正在寻找的是以下

val list = List(1,2,3)
(list :\ 0)(_+_)

_ + _是一个匿名函数的简写,它接受两个参数,并在第二个参数传递第二个参数时调用+方法。

答案 1 :(得分:3)

试试这个:

(list :\ 0)(_ + _)

您需要使用通配符来显示要在第一个参数上调用“+”方法的Scala编译器,而不是使用Tuple2作为函数本身的参数。