is
is(typeInfo)
Parameter: ein Typname
Stack | Position | Beschreibung |
---|---|---|
Stack(In) | Top | ein Wert |
Stack(Out) | Top | TRUE oder FALSE (1 oder0) |
Stackelemente sind - ebenso wie Variable - einfach Container, die alle für die Arbeit mit InstantView® relevanten Werte aufnehmen. Mit InstantView® ist es weder möglich noch nötig, explizit einen Typ zu vereinbaren. In Ausnahmefällen kann es trotzdem interessant sein, statt des Wertes vom Stack (zunächst) Informationen über seinen Typ zu erhalten. Man bekommt TRUE auf den Stack, wenn eine mit is(typeInfo) aufgestellte Vermutung über den Wert vom Stack-Top stimmt. Die folgende Tabelle zeigt, welche Stackwerte bei der Abfrage mit dem Typ aus der linken Spalte TRUE ergeben:
INTEGER | ganze Zahl |
STRING | Zeichenkette |
ML_STRING | multilinguale Zeichenkette |
OBJECT | ein (transientes oder persistentes) Objekt |
TRANSIENT_OBJECT | transientes Objekt |
PERSISTENT_OBJECT | persistentes Objekt |
COLLECTION | Collection |
VECTOR | Vector |
INDEX_PATH | Indexpfad |
INVALID | Konstante INVALID (uninitialisierte Variable, fehlende Daten) |
ACCESS_DENIED | Konstante ACCESS_DENIED - Ergebnis einer Verletzung der Zugriffsrechte |
FLAG | ein Flag |
MARKER | ein Marker |
Marker | |
Marker | |
INSTRUCTION 198288
PROCEDURE |
mittels Push auf den Stack gebrachte Anweisung oder eine anonyme Prozedur |
Zwischen transientem und persistentem Objekt wird hier auf semantischer Ebene und nicht auf technischer Ebene geprüft. Das Beispiel "Lazy Creator" soll das verdeutlichen:
Ein Lazy-Creator-Objekt besteht immer aus zwei Teilen: Dem Lazy-Creator und dem Objekt, das verzögert erzeugt wird. Der Lazy-Creator ist immer transient, während das Objekt immer persistent ist. Wird nun ein Lazy-Creator mit is(PERSISTENT_OBJECT) gefragt, ob es persistent ist, so lautet die Antwort TRUE, denn das Objekt, mit dem letztendlich gearbeitet wird, ist persistent.