for-each für eigene Klassen implementieren
Interessanterweise unterstützt die ListCollectionView und die davon abgeleitete ArrayCollection Klasse des Flex SDKs die Iteration über den in AS3 verfügbaren for-each Loop. Ähnlich wie in Java kann man damit direkt über die Elemente einer Collection iterieren. Das auf den ersten Blick frappierende dabei ist, dass for-each ein “natives” Feature der AVM ist, wohingegen die Flex Klassen ja quasi “on top” sitzen.
Was macht eine ListCollectionView (und ArrayCollections) als solche also kompatibel mit for-each Loops? Schließlich orakelt die offizielle Dokumentation ja nur davon, dass ein for-each Loop nur auf anonymen Objekten oder Instanzen von dynamischen Klassen möglich ist und nur die dynamisch zur Laufzeit hinzugefügten Eigenschaften iterierbar seien.
Ein Testlauf mit dem Debugger gibt Aufschluß: ListCollectionView ist abgeleitet von Proxy. Scheinbar erfüllt Proxy also gegenüber dem for-each Loop den “Vertrag”, ein dynamisches Objekt zu sein (obwohl es das ja streng genommen nicht ist).
Die Iteration findet letztlich über Aufruf der Funktionen nextNameIndex und nextValue statt, wobei letztere im Falle der ListCollectionView dann an die getItemAt Methode delegiert.
Dirk.

Comments(0)

