Lade...
 

Variable (Deklaration)

Variable (Deklaration)

Var(varName1, varName2, ..., varNamen)

Die Variablen varName1, varName2, ..., varNamen werden im Scope des Moduls deklariert.
Danach ist die Variable in diesem und allen abgeleiteten Modulen bekannt.
Die Deklaration einer Variablen mit Modul-Scope darf an jeder Stelle im InstantView®-Code stehen, wo ausführbare Anweisungen erlaubt sind.
Mehrfach-Deklarationen der gleichen Variable im selben oder einem abgeleiteten Modul werden ignoriert.

 

GlobalVar(varName1, varName2, ..., varNamen)

Definiert Variable im globalen Scope.
Die Deklaration einer globalen Variablen darf an jeder Stelle im InstantView®-Code stehen, wo ausführbare Anweisungen erlaubt sind.
Eine globale Variable kann durch eine gleichnamige lokale Variable "unsichtbar" werden; für den umgekehrten Fall gilt jedoch:
Es ist verboten, eine globale Variablen mit dem Namen einer bereits vereinbarten lokalen Variablen zu vereinbaren (Beispiel)!

Hinweis: Eine sinnvolle Vererbung der Module macht die Einführung globaler Variablen weitgehend überflüssig.
Globale Variable verletzen die Objekteigenschaften der Module (Kapselung) und sollten nach Möglichkeit vermieden werden.

 

LocalVar(varName1, varName2, ..., varNamen)

Definiert eine lokale Variable.
Die Deklaration einer lokalen Variablen ist nur in einem lokalen Scope erlaubt:
- innerhalb der Definition eines Statements (Makro)
- in einem {  } Block.

Der Aufruf einer Prozedur mittels super:: verhält sich bzgl. der Variablen wie ein normaler Prozeduraufruf, d.h. lokale Variablen sind untereinander nicht sichtbar.

Beispiele für die Verwendung von lokalen Variablen:

  Var(x)  // variable with  module scope

  INITIALIZE: "A" -> x

  Define(Foo)
    LocalVar(x) // variable with local scope
    INVALID x = /* true at every call to Foo */ ifnot { "impossible!" Attention }
    42 -> x
  ;

 

Die Variable x des Moduls behält den Wert "A".

mit Block-Struktur   { . . . }, bisher erlaubt nach if bzw. ifnot, else und iterate  
Blöcke können
 ab DLL Version 4.5.2.170276 überall auftreten. Das ist sinnvoll um dort lokale Variable zu definieren:

  Define(Foo)
    LocalVar(x)

    INVALID x = /* true at every call to Foo */ ifnot { "impossible" Attention }
    10000 -> x
    do
      { // do doesn’t need a block -> it is here to define a variable!
        LocalVar(x)
        INVALID x = /* true at every loop */ ifnot { "impossible" Attention }
        1 -> x  // Foo::x is NOT changed
      }
      Decr(x)
    x while
  ;

Genau so werden lokale Variable auch in den bereits bekannten Blöcken nach if / ifnot, else und iterate benutzt.

 

StaticVar(varName1, varName2, ..., varNamen)

Statische Variable können im Scope eines Moduls und in lokalen Scopes definiert werden.
Ihre Bedeutung in InstantView entspricht der von statischen Variablen in C++.