wp_query the loop custom list scala collections immutability

the - List.empty vs. List() vs. new List()



wordpress wp_query get categories (3)

Del código fuente de la List tenemos:

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] {...}

Así que podemos ver que es exactamente lo mismo.

Para completar, también puedes usar Nil .

¿Cuál es la diferencia entre List.empty , List() y new List() ? ¿Cuándo debo usar cuál?


En primer lugar, la new List() no funcionará, ya que la clase List es abstracta. Las otras dos opciones se definen de la siguiente manera en el objeto List :

override def empty[A]: List[A] = Nil override def apply[A](xs: A*): List[A] = xs.toList

Es decir, son esencialmente equivalentes, por lo que es principalmente una cuestión de estilo. Prefiero usar el empty porque lo encuentro más claro y reduce los paréntesis.


Para las creaciones de una lista vacía, como han dicho otros, puedes usar la que te parezca mejor.

Sin embargo, para la comparación de patrones con una Lista vacía, solo puede usar Nil

scala> List() res1: List[Nothing] = List() scala> res1 match { | case Nil => "empty" | case head::_ => "head is " + head | } res2: java.lang.String = empty

EDITAR : Corrección: la case List() también funciona, pero la lista de case List.empty no compila