Lade...
 

Scope Beispiele

Module(X) // in name space for modules
[
 

Msg(X) // in name space for messages

 

Var(X) // in name space for variables and statements

 

Define(X) // in name space for variables and statements
    
"X invoked" FillObox(, X);

 

Define(Example)
     X,
SendMsg(X);

  X:
"Msg X received" FillObox(, X)
]

Window(win, 23, 23, 700, 60, "Scope of IV Identifiers")
{
 
Menu
 
{

    Item("Example")
    [
     

SELECT: Example
    ]
 
}

 

ObjectList(X, 3, 3, 1, 1) // in name space for window objects

 

Attach(X, RIGHT, STRETCH, 3)
 
Attach(X, BOTTOM, STRETCH, 3)

}

Die Ausgabe ist:

 

weil sich Anweisung Example nicht auf das Statement X sondern auf die Variable X (mit Wert INVALID) bezieht.

Verändert man die Reihenfolge der Vereinbarung:

Module(X) // in name space for modules
[

  Msg(X) // in name space for messages

 
Define(X) // in name space for variables and statements
    
"X invoked" FillObox(, X);

 
Var(X) // in name space for variables and statements

 
Define(Example)
     X,
SendMsg(X);

  X:
"Msg X received" FillObox(, X)

]

so wird jetzt in Anweisung Example das

Statement X aufgerufen. Die Variable X ist bei der Definition der Anweisung

Example noch gar nicht bekannt!