【发布时间】:2012-08-02 14:54:10
【问题描述】:
List 有 2 个方法指定将元素添加到(不可变)列表中:
-
+:(实现Seq.+:),以及 -
::(仅在List中定义)
+: 在技术上具有更通用的类型签名——
def +:[B >: A, That](elem: B)(implicit bf: CanBuildFrom[List[A], B, That]): That
def ::[B >: A](x: B): List[B]
——但忽略隐含,根据文档消息,它只需要That 为List[B],签名是等价的。
List.+: 和 List.:: 之间有什么区别?如果它们实际上是相同的,我假设 +: 会优先避免,具体取决于具体实现 List。但是为什么要定义另一个公共方法,客户端代码什么时候调用呢?
编辑
在模式匹配中还有一个:: 的提取器,但我想知道这些特定的方法。
【问题讨论】:
标签: list scala operators prepend cons