加上不能在Scala解释器中工作



我试图在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作为函数本身的参数。

最新更新