Ich habe etwas Scala-Code von einem Spiel, das die onInteract(gameData: GameData, player: Player)
-Methode für jede Instanz eines GameObject
in einem mutable.ArrayBuffer
, gameobjects
aufrufen soll. Manchmal entfernen sich diese GameObject
s jedoch selbst aus dem ArrayBuffer
, indem sie den Code gameobjects -= this
verwenden. Da dies die ArrayBuffer
ändert, wirft Scala eine NullPointerException
. Der Code könnte ähnlich sein zu folgenden betrachtet:Wie kann ich über einen Scala ArrayBuffer iterieren, während einige Elemente entfernt werden?
for (gameobject <- gameobjects) {
if (/* some condition */) gameobjects -= gameobject
}
und würde eine Ausnahme ausgelöst, wenn ein Objekt entfernt wird.
Wie kann ich das beheben? Ich würde mir vorstellen, ein ArrayBuffer
, oder zumindest die for
Schleife, ist hier ungeeignet.
Dies ist in ähnlicher Weise ein Problem in Python: http://Stackoverflow.com/q/1207406/1240268 (nicht während der Iteration ändern, haben Sie eine schlechte Zeit!) –
Dies ändert das Verhalten durch Erstellen eines neuen 'ArrayBuffer' statt das vorhandene zu modifizieren. – vossad01