fre*_*low 27 collections scala list immutability
什么区别List.empty,List()和new List()?我什么时候应该使用哪个?
Tra*_*own 33
首先new List(),由于List课堂是抽象的,所以不会奏效.另外两个选项被定义为如下的List对象:
override def empty[A]: List[A] = Nil
override def apply[A](xs: A*): List[A] = xs.toList
Run Code Online (Sandbox Code Playgroud)
即,它们基本上是等同的,所以它主要是风格问题.我更喜欢使用,empty因为我发现它更清晰,它减少了括号.
Chr*_*che 12
从List的源代码我们有:
object List extends SeqFactory[List] {
...
override def empty[A]: List[A] = Nil
override def apply[A](xs: A*): List[A] = xs.toList
...
}
case object Nil extends List[Nothing] {...}
Run Code Online (Sandbox Code Playgroud)
所以我们可以看到它完全一样
为了完整,您也可以使用Nil.