预置到矢量标度

Prepend to vector scala

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
              ^

谁能赐教

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

4 +: List(1,2,3)

使用带点符号的 List[T] 时不会发生这种情况,因为这是对列表的显式调用。使用中缀表示法时,编译器会进行额外的语法脱糖。这个:

List(1,2,3) +: 4

变成了

4.+:(List(1,2,3))

但是在 Int 上找不到 +:,所以它抱怨。