====== Reflection ====== reflects ist eine Klasse/Operator, die aus einem anderen Datentyp erzeugt werden kann. r reflects int; r reflektiert anschließend int. r kann den Datentyp beschreiben: print r.sizeof(), "\n"; print r$, "\n"; print r.isPrimitiv(), "\n"; => 4 int true Außerdem verfügt r über eine Liste der enthaltenen Member print r.count(), "\n"; => 0 ---- Point contains x, y is double; r reflects Point; // r is type : Point@; print r.sizeof(), "\n"; print r[]#, "\n"; print r[0].sizeof(), "\n"; print r[0]$, "\n"; print r[0].isPrimitiv(), "\n"; print r[0].name(), "\n"; print r[0].position(), "\n"; print r[1].sizeof(), "\n"; print r[1]$, "\n"; print r[1].isPrimitiv(), "\n"; print r[1].name(), "\n"; print r[0].position(), "\n"; print r$, "\n"; print r.isPrimitiv(), "\n"; => 8 2 4 int true x 0 4 int true y 4 Point false Eine derartige Datenstruktur kann mit der vTable kombiniert werden, so dass Objekte, die persistiert werden können, grundsätzlich "virtual" sind. io-Klassen kann sich so durch die Typen hangeln und in Schleifen die Daten entsprechend abhandeln.