Jaka jest różnica między List.empty
, List()
i new List()
? Kiedy powinienem użyć którego?List.empty vs. List() vs. nowa Lista()
24
A
Odpowiedz
30
Po pierwsze, new List()
nie będzie działać, ponieważ klasa List
jest abstrakcyjna. Pozostałe dwie opcje są zdefiniowane w następujący sposób the List
object:
override def empty[A]: List[A] = Nil
override def apply[A](xs: A*): List[A] = xs.toList
Znaczy to, że są zasadniczo równoważne, więc jest to głównie kwestia stylu. Wolę używać empty
, ponieważ uważam, że jest jaśniejszy i ogranicza się do nawiasów.
12
z kodu źródłowego List mamy:
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] {...}
Widzimy więc, że jest to dokładnie to samo
Dla kompletności, można również użyć Nil
.
4
Dla twórców pustej listy, jak powiedzieli inni, można użyć tego, który wygląda najlepiej.
Jednak za wzór pasujący przed pustą listę, można użyć tylko Nil
scala> List()
res1: List[Nothing] = List()
scala> res1 match {
| case Nil => "empty"
| case head::_ => "head is " + head
| }
res2: java.lang.String = empty
EDIT: Korekta: case List()
działa zbyt, ale case List.empty
nie kompiluje
Powiązane problemy
- 1. Lista Java vs ArrayList
- 2. C#: params keyword vs list
- 3. mojalista = lista() vs wypożyczane = [] Pythona
- 4. Ogólna lista FindAll() vs. foreach
- 5. Co to jest Tuple? I tuple vs. List vs. Vector?
- 6. Względna wydajność std :: vector vs. std :: list vs. std :: slist?
- 7. python: porównanie deque vs lista
- 8. lista zawiera Scala vs tablica zawiera
- 9. Lista z porównywalnym zestawem drzewiastym Vs
- 10. Nowa lista linii do tablicy
- 11. IEnumerable vs Lista w klasie odpowiedzi, ServiceStack
- 12. tuple vs list obiektów w python
- 13. Lista rozgrywających vs. zestaw zagnieżdżonych modeli
- 14. Haskell Lista Łączenie vs (głowa tail) format
- 15. Wektor bitowy vs lista wartości boolean wydajność
- 16. Zużycie pamięci Pythona: dict Lista krotek VS
- 17. Boo vs C# vs Python?
- 18. IList <int> vs Lista <int>
- 19. metoda vs funkcja vs procedura vs klasa?
- 20. body.scrollTop vs documentElement.scrollTop vs window.pagYOffset vs window.scrollY
- 21. Opa vs Dart vs Haxe vs coffeescript
- 22. VS 2008 vs VS 2008 Express
- 23. Strona vs Extent vs. Segment vs. Tabele
- 24. Crystalspace vs. Irrlicht vs. .....?
- 25. NetSqlAzMan vs AzMan vs (?????)
- 26. SpiderMonkey vs JavaScriptCore vs?
- 27. Kolejka <T> vs Lista <T>
- 28. Python quicksort - List comprehension vs Recursion (procedura partycji)
- 29. Lista list różnych typów
- 30. Lista list kontra słownik
Można dodać do 'zerowe tę listę. – Jesper