Ada beberapa cara untuk membuat daftar yang tidak dapat diubah di Scala (lihat kode contoh yang dibuat-buat di bawah). Anda dapat menggunakan ListBuffer yang dapat berubah, membuat var
daftar dan memodifikasinya, menggunakan metode rekursif ekor , dan mungkin metode lain yang tidak saya ketahui.
Secara naluriah, saya menggunakan ListBuffer, tetapi saya tidak punya alasan bagus untuk melakukannya. Adakah metode yang disukai atau idiomatik untuk membuat daftar, atau adakah situasi yang paling baik untuk satu metode di atas yang lain?
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
Apakah itu karena daftar baru dibuat? Padahal, menggunakan operasi awal tidak akan membuat daftar baru?