List.empty与List()与新List()

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.