is
is(typeInfo)
Parameter: a type name
Stack | Position | Description |
---|---|---|
Stack(In) | Top | a value |
Stack(Out) | Top | TRUE or FALSE (1 or0) |
Stack elements - just like variables - are simply containers that hold all the values relevant to working with InstantView®. With InstantView® it is neither possible nor necessary to explicitly agree on a type. In exceptional cases, it may nevertheless be interesting to (initially) obtain information about its type instead of the value from the stack. You get TRUE on the stack, if an assumption made with is(typeInfo) about the value of the stack top is correct. The following table shows which stack values result in TRUE when queried with the type from the left column:
INTEGER | integer |
STRING | Character string |
ML_STRING | multilingual character string |
OBJECT | a (transient or persistent) object |
TRANSIENT_OBJECT | transient object |
PERSISTENT_OBJECT | persistent object |
COLLECTION | Collection |
VECTOR | Vector |
INDEX_PATH | Index path |
INVALID | constant INVALID (uninitialised variable, missing data) |
ACCESS_DENIED | constant ACCESS_DENIED - Result of an access rightsviolation |
FLAG | one flag |
MARKER | a marker |
Marker | |
Marker | |
INSTRUCTION 198288 PROCEDURE | an instruction put on the stack by push or an anonymous procedure |
Between transient and persistent object is tested here on a semantic level and not on a technical level. The example "Lazy Creator" is intended to illustrate this:
A Lazy Creator object always consists of two parts: The Lazy Creat or and the object that is created with a delay. The lazy creat or is always transient, while the object is always persistent. If a Lazy-Creator is asked with is(PERSISTENT_OBJECT) whether it is persistent, the answer is TRUE, because the object that is finally used is persistent.