前置矢量scala

时间:2017-09-14 11:01:34

标签: scala scala-collections

新手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
              ^

有人可以启发我

1 个答案:

答案 0 :(得分:3)

在Scala中,以冒号表示法结尾且以中缀表示法使用的方法是右关联,这意味着该方法位于右侧的元素上。你需要:

:

当使用带有点符号的4 +: List(1,2,3) 时,这不会发生,因为这是列表上的显式调用。使用中缀表示法时,编译器会执行额外的语法设计。这样:

List[T]

变成

List(1,2,3) +: 4

但是在4.+:(List(1,2,3)) 上找不到+:,所以它会抱怨。