Klasse CX_FORMULA - Variable
Variable einer Formel können beliebige Zugriffsausdrücke sein. Dynamische Datenfelder kommen besonders oft als Variable in Formeln vor und werden deshalb intern besonders behandelt, d.h. die Repräsentation und Bindung an Objekte im PlugSpace sind effektiver
als im allgemeinen Fall.Vor der Berechnung des Formelwerts werden die Variablen gebunden, d.h. es wird
festgelegt, auf welche Datenfelder welcher Objekte sie verweisen.
Beim Binden der Variablen (und der externen Funktionen) wird jedes im PlugSpace registrierte Objekt auf die Existenz des entsprechenden Datenfelds getestet, und wenn es existiert, bezeichnet die Variable der Formel während der Berechnung genau dieses Datenfeld. Die Reihenfolge der Objekte im PlugSpace ist wichtig, da eine Variable mit
verschiedenen Objekte gebunden werden könnte.Es gibt zwei Bindungsmodi: eng bzw. locker. Enge Bindung kann nur
mittels der Funktionen get und has gefordert werden, d.h. der Normalfall ist die lockere Bindung und für die viele Objekte besteht auch kein Unterschied zwischen beiden Modi. Den Zusammenhang zwischen Operanden im Formelausdruck, Bindungsmodus und den virtuellen Funktionen, mittels deren eine Klasse ein eigenes Verhalten bei der Variablenbindung
definieren kann, zeigt folgende Tabelle:Modus | Variable x als Operand | Test auf Existenz der Variablen x | dyn. Datenfeld wird gebunden mit | Zugriffsausdruck wird gebunden mit |
---|---|---|---|---|
locker | x | available(x) | PlugDataField2() | PlugDataField() |
eng | get(x) | has(x) | GetDataField2() | GetDataField() |