Nếu bạn cần phải đột biến công cụ, sử dụng ArrayBuffer
hoặc LinkedBuffer
để thay thế. Tuy nhiên, nó sẽ là tốt hơn để giải quyết các tuyên bố này:
tôi cần phải khai báo danh sách trống hoặc bản đồ trống và một số nơi sau này trong mã cần phải điền họ.
Thay vì làm điều đó, hãy điền vào danh sách có mã trả về các phần tử. Có rất nhiều cách để làm điều đó, và tôi sẽ đưa ra một số ví dụ:
// Fill a list with the results of calls to a method
val l = List.fill(50)(scala.util.Random.nextInt)
// Fill a list with the results of calls to a method until you get something different
val l = Stream.continually(scala.util.Random.nextInt).takeWhile(x => x > 0).toList
// Fill a list based on its index
val l = List.tabulate(5)(x => x * 2)
// Fill a list of 10 elements based on computations made on the previous element
val l = List.iterate(1, 10)(x => x * 2)
// Fill a list based on computations made on previous element, until you get something
val l = Stream.iterate(0)(x => x * 2 + 1).takeWhile(x => x < 1000).toList
// Fill list based on input from a file
val l = (for (line <- scala.io.Source.fromFile("filename.txt").getLines) yield line.length).toList
Nguồn
2011-07-02 19:54:56
Điều gì khiến bạn nghĩ rằng có thao tác 'thêm' trên' Danh sách'? – Debilski
Nếu bạn muốn sử dụng thao tác thêm, bạn sẽ phải khai báo một ArrayList. Vals trong scala cơ bản là bất biến, vì vậy bạn không thể thêm vào chúng. – Phantom73
iirc val là giống như cuối cùng, bạn có thể thêm vào chúng nếu bạn sử dụng Bộ sưu tập có thể thay đổi. ví dụ. http://www.scala-lang.org/api/current/scala/collection/mutable/MutableList.html – DaVinci