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.