当使用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
上的+
方法一致,这是一种有点常见的非正式数学符号。