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

ttt*_*ttt 0 scala scala-collections

看不到Scala List ::+:Scala List 的真正区别.

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

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

Joh*_*shy 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)
}
Run Code Online (Sandbox Code Playgroud)

通常,+:定义在,SeqLike并且任何实现的集合SeqLike都可以使用相同的.

另一方面::是定义的List,只能用于List.