Có một số cách để tạo danh sách bất biến trong Scala (xem mã ví dụ có sẵn bên dưới). Bạn có thể sử dụng ListBuffer có thể thay đổi, tạo một var
danh sách và sửa đổi nó, sử dụng phương thức đệ quy đuôi và có thể là những phương thức khác mà tôi không biết.
Theo bản năng, tôi sử dụng ListBuffer, nhưng tôi không có lý do chính đáng để làm như vậy. Có phương pháp ưa thích hoặc phương pháp thành ngữ nào để tạo danh sách hay có những tình huống tốt nhất cho phương pháp này hơn phương pháp khác không?
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
Đó có phải là do một danh sách mới được tạo? Trong khi, sử dụng thao tác thêm trước sẽ không tạo danh sách mới?