Scala'da :: ve ::: arasındaki fark nedir


83
val list1 = List(1,2)
val list2 = List(3,4)

sonra

list1::list2 returns:

List[Any] = List(List(1, 2), 3, 4)

list1:::list2 returns:

List[Int] = List(1, 2, 3, 4)

Kitabın, kullanıldığında ::sonuçlarının da olduğunu yazdığını gördüm List[Int] = List(1, 2, 3, 4). Scala sürümüm 2.9.

Yanıtlar:


119

::tek bir öğenin :::başına, tam listenin başına eklenir. Öyleyse, Listönüne bir koyarsanız ::, tek bir öğe olarak alınır ve bu da iç içe bir yapı ile sonuçlanır.


Performans nedeniyle, ::ve arasında fark var :::mı?
null

2
Performans, başa eklenecek öğelerin sayısı O(n)ile olmalıdır n.
Debilski

Yanılıyorsam düzelt ama bu işlem bir başa ekleme değil, bir ek değil mi?
Janac Meena

1
bir örnek anlamayı çok daha kolay hale getirir
techkuz

20

Genel olarak:

  • :: - listenin başına bir öğe ekler ve eklenen öğenin bulunduğu bir liste döndürür
  • ::: - iki listeyi birleştirir ve birleştirilmiş listeyi döndürür

Örneğin:

1 :: List(2, 3)             will return     List(1, 2, 3)
List(1, 2) ::: List(3, 4)   will return     List(1, 2, 3, 4)

Spesifik sorunuzda, kullanmak ::bir liste ( iç içe geçmiş liste ) ile sonuçlanacaktır, bu yüzden kullanmayı tercih ettiğinizi düşünüyorum :::.

Referans: sınıf Listesi int the official site

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.