Scala'da değişmez bir liste oluşturmanın birkaç yolu vardır (aşağıdaki hazırlanmış örnek koda bakın). Değişken bir ListBuffer kullanabilir, bir var
liste oluşturabilir ve onu değiştirebilir, bir tail recursive metodu ve muhtemelen bilmediğim diğerlerini kullanabilirsiniz.
İçgüdüsel olarak ListBuffer'ı kullanıyorum, ancak bunu yapmak için iyi bir nedenim yok. Liste oluşturmak için tercih edilen veya deyimsel bir yöntem var mı, yoksa bir yöntem için diğerine göre en iyi olan durumlar 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)
}
What you DON'T do is use a List and append to it
Bunun nedeni yeni bir listenin oluşturulması mı? Oysa başa ekleme işlemi kullanmak yeni bir liste oluşturmaz?