我试图在Scala解释器中使用fold来总结一个列表,但它一直给我一个奇怪的错误.当我输入这个:
val list = List(1,2,3)
(list :\ 0)(+)
Run Code Online (Sandbox Code Playgroud)
我希望得到6.然而,翻译说
error: illegal start of simple expression
(list :\ 0)(+)
^
Run Code Online (Sandbox Code Playgroud)
如果我定义自己的功能
def plus(a: Int, b: Int) = a+b
Run Code Online (Sandbox Code Playgroud)
并打电话
(list :\ 0)(plus)
Run Code Online (Sandbox Code Playgroud)
事实上,我确实得到了6.
我确定我在这里遗漏了一些非常简单的东西,但我无法弄明白,所以任何帮助都非常感激.
Nei*_*ssy 10
加号运算符本身不是一个函数,它是一个符号,没有类型.您正在寻找的是以下内容
val list = List(1,2,3)
(list :\ 0)(_+_)
Run Code Online (Sandbox Code Playgroud)
_ + _是一个匿名函数的简写,它接受两个参数,并在第二个参数传递的第一个参数上调用+方法.