List
有 2 种方法指定将元素添加到(不可变)列表中:
+:
(实施Seq.+:
),和::
(仅在 中定义List
)
+:
技术上具有更通用的类型签名——</p>
def +:[B >: A, That](elem: B)(implicit bf: CanBuildFrom[List[A], B, That]): That
def ::[B >: A](x: B): List[B]
——但忽略隐含的,根据文档消息只需要That
be List[B]
,签名是等价的。
List.+:
和 和有什么不一样List.::
?如果它们实际上是相同的,我认为+:
最好避免取决于具体的实现List
。但是为什么要定义另一个公共方法,客户端代码什么时候会调用它呢?
编辑
还有一个用于::
模式匹配的提取器,但我想知道这些特定的方法。
另请参阅:Scala 列表连接,::: vs ++