Kilka dni temu znalazłem istotę Paul Philipa w gruncie https://gist.github.com/paulp/9085746, która pokazuje dość dziwne zachowanie. Nie mogę znaleźć żadnego wyjaśnienia, jak to możliwescala mutable val Lista
uproszczone fragment kodu:
val buf = new ListBuffer[Int]()
buf ++= Seq(1,2,3)
val lst: List[Int] = buf.toIterable.toList
println(lst) //List(1,2,3)
buf ++= Seq(4,5,6)
println(lst) //List(1,2,3,4,5,6)
To działa zgodnie z oczekiwaniami bez toIterable
val buf = new ListBuffer[Int]()
buf ++= Seq(1,2,3)
val lst: List[Int] = buf.toList
println(lst) //List(1,2,3)
buf ++= Seq(4,5,6)
println(lst) //List(1,2,3)
Co się tam dzieje?
To jest błąd, prawda? Chodzi mi o to, nie sposób to zachowanie jest faktycznie przeznaczone ... – Dima
@ Dima Wierzę, że jest błąd – Odomontois
Wygląda na to, że tak naprawdę nie jest po prostu 'append': na przykład,' buf - = 3' również mutuje ' lst' – Dima