Vor wenigen Tagen fand ich Paul Philip's Kern https://gist.github.com/paulp/9085746, der ziemlich merkwürdiges Verhalten zeigt. Ich habe keine Erklärung finden, wie ist das möglichscala veränderbares val Liste
vereinfacht Code-Schnipsel:
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)
Es funktioniert wie erwartet ohne 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)
Was ist da los?
Das ist ein Fehler, oder? Ich meine, auf keinen Fall ist dieses Verhalten eigentlich beabsichtigt ... – Dima
@Dima Ich glaube, es ist ein Fehler – Odomontois
Es scheint, als wäre es nicht wirklich nur 'append': zum Beispiel,' buf - = 3' mutiert auch die ' lst – Dima