Scala 列表方法`::` 与`+:`
Scala List method `::` vs `+:`
看不出 Scala List 的 ::
和 +:
方法之间的真正区别。
我使用 REPL 进行测试,结果看不出差异。
任何人都可以告诉我如何正确使用它?
查看 List 的代码,+:
使用 ::
(缺点)运算符进行前置。
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
使用。
看不出 Scala List 的 ::
和 +:
方法之间的真正区别。
我使用 REPL 进行测试,结果看不出差异。
任何人都可以告诉我如何正确使用它?
查看 List 的代码,+:
使用 ::
(缺点)运算符进行前置。
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
使用。