我最近开始使用scala,我无法做出任何错误消息.对于以下代码,我得到了声明的消息(使用eclipse):
def helper: Int => List[Int] = x => x match {
case 2 => 2::1
...
}
Run Code Online (Sandbox Code Playgroud)
我可以通过使用List(2,1)来修复它,但是它不应该与2 :: 1相同吗?我有类似的问题,List(...)方法会更难使用,所以我真的想知道我的思维错误在哪里.
sep*_*p2k 11
中缀运算符被解释为Scala中的方法调用.如果中缀运算符以冒号结束,则它是对右操作数的方法调用,左操作数作为其参数.否则,它是左操作数上的方法调用,右操作数作为其参数.
换句话说,如果你这样做x + y,它就是相同的x.+(y),即你在+对象上调用方法x,y作为参数.如果你做的x :: y是一样的y.::(x),调用该方法::的对象y.
所以在你的例子中,你在::对象上调用方法1,这是一个Int.但是,该类Int没有::方法,因此这不起作用,并且您会收到一条错误消息,告诉您该类的::方法不存在Int.
为了使::工作,正确的操作数需要是一个列表(或其他具有::方法的东西),因此2 :: 1 :: Nil可行.然而,在这种情况下使用List()似乎更清洁的替代品.