Accessoren
Ein Accessor ist ein erzeugter Getter und Setter für eine Property. Er ist einfacher Code und funktioniert deshalb auch dort, wo es keine Laufzeit-Reflection gibt.
reflectWithAccessors
reflect lässt Accessoren weg, damit Deskriptoren klein bleiben. reflectWithAccessors legt in jede Property einen, erreichbar über den Namen. Eine var bekommt einen Setter, ein val einen nur lesenden Accessor.
Das Theme über den Accessor umschalten
Die Knöpfe rufen set auf einer Settings-Instanz auf; der Wert wird mit get zurückgelesen.
- theme.get(settings)
- light
- theme.hasSetter
- true
- version.hasSetter
- false
- reflect[Settings].getPropertyAccessor("theme")
- None
makeAccessor
makeAccessor baut einen einzelnen Accessor aus einem Selektor, ohne Deskriptor drumherum. Den Selektor prüft der Compiler.
- theme.get(Settings("light", 1))
- light
- theme.hasSetter
- false
In Version 1.1.4 findet makeAccessor keinen Setter, auch nicht bei einer var: Sein Accessor liest, und set wirft UnsupportedOperationException. Nimm den Accessor aus reflectWithAccessors, wenn du schreiben musst.