我最近开始使用 scala,但我无法获取任何错误消息。对于以下代码,我得到指定的消息(使用 eclipse):
def helper: Int => List[Int] = x => x match {
case 2 => 2::1
...
}
我可以使用 List(2,1) 来修复它,但这不是和 2::1 一样吗?
我也有类似的问题,其中 List(...) 方法更难使用,所以我真的想知道我的思维错误在哪里。
中缀运算符在 Scala 中被解释为方法调用。如果中缀运算符以冒号结尾,则这是对右操作数的方法调用,并将左操作数作为其参数。否则,它是对左操作数的方法调用,并将右操作数作为其参数。
换句话说,如果你这样做x + y
,它与x.+(y)
,即您正在调用该方法+
在物体上x
, with y
作为论点。如果你这样做x :: y
它是一样的y.::(x)
,调用该方法::
在物体上y
.
所以在你的例子中你调用这个方法::
在物体上1
,这是一个Int
。然而班级Int
没有::
方法,所以这不起作用,您会收到一条错误消息,告诉您::
方法不存在Int
class.
To make ::
工作,正确的操作数需要是一个列表(或其他具有::
方法),所以2 :: 1 :: Nil
会工作。然而在这种情况下使用List()
似乎是更清洁的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)