Jeśli trzeba zmutować rzeczy, użyj ArrayBuffer
lub LinkedBuffer
zamiast. Jednak byłoby lepiej, aby rozwiązać ten oświadczenie:
muszę zadeklarować pustą listę lub pustych mapy i gdzieś później w kodzie trzeba je wypełnić.
Zamiast tego, wypełnij listę kodem, który zwraca elementy. Istnieje wiele sposobów, aby to uczynić, a dam kilka przykładów:
// 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
Co sprawia, że myślisz, że istnieje operacja 'add' na liście' List'? – Debilski
Jeśli chcesz użyć operacji dodawania, musisz zadeklarować ArrayList. Vals in scala są w zasadzie niezmienne, więc nie możesz ich dodać. – Phantom73
iirc val jest bardziej podobny do ostatecznego, możesz do niego dodać, jeśli używasz zmiennych kolekcji. na przykład http://www.scala-lang.org/api/current/scala/collection/mutable/MutableList.html – DaVinci