为什么scala地图上没有:: Operator?

时间:2017-03-26 00:10:59

标签: scala

使用Scala不可变列表时我可以轻松完成

1 :: List(2, 3, 4)

这给了我一个新列表,我仍在使用不可变数据结构。

那我为什么不能呢

(1 -> 1) :: Map(2 -> 2)

1 个答案:

答案 0 :(得分:4)

它在那里;它叫做+

scala> Map(2 -> 2) + (1 -> 1)
res0: scala.collection.immutable.Map[Int,Int] = Map(2 -> 2, 1 -> 1)

它们的功能相当不同,所以我认为以不同的方式命名它们并不奇怪。 ::只构造一个cons单元格(它实际上是构造函数 - :: is a case class that extends List),而Map的{​​{1}}具有更复杂的行为,要么添加新映射,要么替换现有的一个取决于地图中键的值。

名称+暗示来自Haskell等语言的::,名称:+上的+方法一致是一种有点常见的非正式数学符号。