新手scala,我发现处理收藏混乱的象征符号。要将项目附加到列表或向量,我可以使用:
List(1, 2, 3) :+ 4
我理解为这种方法的中缀形式
List(1, 2, 3).:+(4)
如果我想在列表前加上我可以使用
List(1, 2, 3).+:(4)
但是中缀表单给了我一个编译错误
List(1,2,3) +: 4
Error:(121, 16) value +: is not a member of Int
Vector(1,2,4) +: 4
^
有人可以启发我
答案 0 :(得分:3)
在Scala中,以冒号表示法结尾且以中缀表示法使用的方法是右关联,这意味着该方法位于右侧的元素上。你需要:
:
当使用带有点符号的4 +: List(1,2,3)
时,这不会发生,因为这是列表上的显式调用。使用中缀表示法时,编译器会执行额外的语法设计。这样:
List[T]
变成
List(1,2,3) +: 4
但是在4.+:(List(1,2,3))
上找不到+:
,所以它会抱怨。