12.8 Lokale Funktionen

Da Funktionen in Hollywood nur Variablen vom Typ "Function" sind, können Sie auch lokale Funktionen nutzen, die eine begrenzte Lebensdauer haben. Sie arbeiten so ziemlich auf die gleiche Art und Weise wie lokale Variablen und haben auch die gleichen Vorteile. Hier ist ein Beispiel für eine lokale Funktion:

 
Block
    Local p_Add = Function(a, b) Return(a + b) EndFunction
    Print(p_Add(5, 6))     ; gibt 11 aus
EndBlock

In dem obigen Code wird die Funktion p_Add() im Block als lokal erstellt. Daher können alle anderen Versuche, p_Add() nach der EndBlock-Anweisung aufzurufen zu einem Fehler führen.

Sie könnten auch den obigen Code so schreiben:

 
Block
    Local Function p_Add(a, b) Return(a + b) EndFunction
    Print(p_Add(5, 6))     ; gibt 11 aus
EndBlock

Lokale Funktionen können auch hilfreich sein, wenn Sie vorübergehend einen Hollywood-Befehl ersetzen wollen. Beispielsweise ersetzt der folgende Code den Befehl DebugPrint() mit dem Befehl Print() nur für die Lebensdauer des Blocks:

 
If error = True
    Local Function DebugPrint(...) Print(Unpack(arg)) EndFunction
    DebugPrint("An error occurred!") ; Umleitung zu Print()
EndIf
DebugPrint("Hello")                  ; verweist wieder auf DebugPrint()

Die Zeichenkette "An error occurred!" wird oben im Code auf Ihrem Display wiedergegeben werden, da wir eine lokale Funktion definiert haben DebugPrint(), die der Hollywood-Befehl Print() aufruft. Diese lokale DebugPrint() wird gelöscht, wenn der Block verlassen wird. Der folgende Aufruf von DebugPrint() wird den realen Hollywood-Befehl DebugPrint() aufrufen.


Navigation zeigen