预置到矢量标度
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
上找不到 +:
,所以它抱怨。
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
上找不到 +:
,所以它抱怨。