Yolu Scala bir liste oluşturmak için tercih edilen
Scala (yapmacık örnekte, kodu) değişmez bir liste oluşturmak için çeşitli yollar vardır. Değiştirilebilir bir ListBuffer kullanmak, var bir listesini oluşturmak ve değiştirebilirsiniz, tail recursive bir yöntemi kullanmak, ve muhtemelen benim bilmediğim Diğerleri.
İçgüdüsel olarak, ListBuffer kullanıyorum, ama bunu yapmak için iyi bir nedenim yok. Bir liste, ya da daha iyi bir yöntem olduğu durumlar vardır başka bir yere oluşturmak için tercih edilen ya da deyimsel bir yöntem var mı?
import scala.collection.mutable.ListBuffer
// THESE are all the same as: 0 to 3 toList.
def listTestA() ={
var list:List[Int] = Nil
for(i <- 0 to 3)
list = list ::: List(i)
list
}
def listTestB() ={
val list = new ListBuffer[Int]()
for (i <- 0 to 3)
list = i
list.toList
}
def listTestC() ={
def _add(l:List[Int], i:Int):List[Int] = i match {
case 3 => l ::: List(3)
case _ => _add(l ::: List(i), i 1)
}
_add(Nil, 0)
}
CEVAP
ListBuffer sürekli-zaman ekleme ve List sabit-zaman dönüşümü olan değişken bir liste.
List değişmez ve sürekli önüne ve lineer zamanı ekleyin.
Nasıl liste için list ve sipariş elemanları oluşturmak için algoritma bağlıdır oluşturun.
Eğer kullanılacaksa zaman ters sırayla elementleri örneğin, eğer, o zaman sadece List kullanım ve başa yapabilirsiniz. Olsun o kadar kuyruk özyinelemeli bir işlev olacak, foldLeft veya başka bir şey pek alakalı değil.
Eğer bunları kullanmak aynı sırada unsurları alırsanız, o zaman bir ListBuffer Eğer performans önemli ise büyük olasılıkla tercih edilen bir seçimdir.
Ama, eğer sen değil bir kritik yol ve giriş yeterince düşük, her zaman reverse liste daha sonra, ya da sadece foldRight reverse giriş, doğrusal-zaman.
Sana neYOKList kullanın ve Ekle. Bu sadece bir ön yerleştirmeyi ve sonunda tersine çok daha kötü bir performans verir.

Ruby on Rails web uygulama grafik oluÅŸ...
Yapı ve Bunun projeleri oluşturmak içi...
PHP diziler depolamak için tercih edil...
Tek örnek bir uygulama oluşturmak için...
Otomatik oluÅŸturmak SQL Server tablo i...