我试图在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
。
我肯定我错过了一些非常简单的东西,但是我不能弄清楚,所以任何帮助都是非常感谢的。
加号操作符本身不是函数,它是一个符号,没有类型。您要查找的是以下内容
val list = List(1,2,3)
(list : 0)(_+_)
_+_是匿名函数的简写,该函数接受两个形参,并在第一个形参传入第二个形参时调用+方法。
试试这个:
(list : 0)(_ + _)
您需要使用通配符向Scala编译器显示您希望在第一个参数上调用"+"方法,而不是使用Tuple2作为函数本身的参数。