¿Cuál es la diferencia entre List.empty
, List()
y new List()
? ¿Cuándo debería usar cuál?List.empty vs. List() vs. new List()
24
A
Respuesta
30
En primer lugar, new List()
no funcionará, ya que la clase List
es abstracta. Las otras dos opciones se definen de la siguiente manera en the List
object:
override def empty[A]: List[A] = Nil
override def apply[A](xs: A*): List[A] = xs.toList
es decir, que son esencialmente equivalentes, por lo que es sobre todo una cuestión de estilo. Prefiero usar empty
porque me parece más claro y se reduce entre paréntesis.
12
A partir del código fuente de 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] {...}
para que podamos ver que es exactamente el mismo
Para completar, también se puede utilizar Nil
.
4
Para las creaciones de una lista vacía, como han dicho otros, puede usar la que le parezca mejor.
Sin embargo, para la coincidencia de patrones en contra de una lista vacía, sólo se puede utilizar Cero
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: case List()
también funciona, pero no se compila case List.empty
Cuestiones relacionadas
- 1. List vs Set vs Bag en NHibernate
- 2. Polimorfismo: ¿Por qué usar "List list = new ArrayList" en lugar de "ArrayList list = new ArrayList"?
- 3. Python numpy array vs list
- 4. Realloc Vs Linked List Scanning
- 5. Modelado de series de tiempo en f # - seq vs array vs vector vs list vs generic list
- 6. ObservableCollection <> vs. List <>
- 7. mylist = list() vs mylist = [] en Python
- 8. std :: list vs std :: vector iteration
- 9. ¿Diferencias significativas en Array vs Array List?
- 10. tuple vs list objects en python
- 11. Lists.newArrayList vs new ArrayList
- 12. .NET List <T> Concat vs AddRange
- 13. Lista <? extiende Base> VS List <Base>
- 14. Queue <T> vs List <T>
- 15. IEnumerable vs List in the Response Class, ServiceStack
- 16. const vs new const
- 17. newInstance() vs new
- 18. Marshal.PtrToStringUni() vs new String()?
- 19. System.currentTimeMillis (vs) new Date() vs. Calendar.getInstance(). GetTime()
- 20. Rendimiento relativo de std :: vector vs. std :: list vs. std :: slist?
- 21. & new MyClass() vs new MyClass() en PHP
- 22. target = "_ blank" vs. target = "_ new"
- 23. CoffeeScript “Array()” vs “new Array()”
- 24. ¿Qué implementación de List usar?
- 25. OOP: diferencia entre ArrayList al = new ArrayList() y List al = new ArrayList()?
- 26. List Intersect return null
- 27. Spring autowire a list
- 28. ¿Cuál es la diferencia entre list [-1:] [0] y list [len (list) -1]?
- 29. MigraDoc Bullet List (agujeros)
- 30. New Relic vs ScoutApp vs Cloudkick para monitorear mis servidores
Usted puede agregar las negativas a ' esa lista. – Jesper