为什么在 scala 地图上没有 :: 运算符

  • 本文关键字:运算符 地图 scala scala
  • 更新时间 :
  • 英文 :


当使用Scala不可变列表时,我可以很容易地做到

1 :: List(2, 3, 4)

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

那我为什么不能做

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

它在那里;它只是被称为+

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

它们是相当不同的功能,所以我认为以不同的方式命名它们并不奇怪。 ::只是构造一个 cons 单元(它实际上是一个构造函数 - ::是一个扩展List的案例类(,而Map+具有更复杂的行为,要么添加新映射,要么根据映射中键的值替换现有映射。

::这个名字暗指哈斯克尔等语言的:+这个名字与Set上的+方法一致,这是一种有点常见的非正式数学符号。

最新更新