Scala List方法`::`vs` +:`

时间:2015-06-21 12:50:39

标签: scala scala-collections

无法看到Scala列表的::+:方法之间的真正区别。

我使用REPL进行测试,但无法从结果中看到差异。

任何人都可以告诉我如何正确使用它?

1 个答案:

答案 0 :(得分:5)

查看List的代码,+:使用::(cons)运算符进行前置。

override def +:[B >: A, That](elem: B)(implicit bf: CanBuildFrom[List[A], B, That]): That = bf match {
  case _: List.GenericCanBuildFrom[_] => (elem :: this).asInstanceOf[That]
  case _ => super.+:(elem)(bf)
}

通常,+:中定义了SeqLike,任何实施SeqLike的集合都可以使用相同的内容。

另一方面,::List中定义,只能由List使用。