12.2 Funktionen sind Variablen

In Hollywood sind Funktionen nur Variablen vom Typ Funktion. Daher können Sie leicht anderen Variablen zuweisen, z.B:

 
myfunc = DisplayBrush       ; weist "myfunc" DisplayBrush zu
myfunc(1, #CENTER, #CENTER) ; ruft DisplayBrush(1, #CENTER,...
                            ; ... #CENTER) auf

Sie können sogar die Definition einer Funktion als Auftrag schreiben:

 
p_Add = Function(a, b) Return(a + b) EndFunction
c = p_Add(5, 2)   ; c erhält 7

Die Definition von p_Add() in der ersten Zeile ist die gleiche wie wenn Sie schreiben:

 
Function p_Add(a, b)
    Return(a + b)
EndFunction

Sie könnten auch Hollywood-Befehle mit Ihrem eigenen Funktionen ersetzen. Wenn Sie z.B. wollen, dass alle Print()-Aufrufe stattdessen DebugPrint() verwenden, könnte der folgende Code dies zu tun:

 
Function p_Print(...)
    DebugPrint(Unpack(arg))   ; leitet die Argumente an DebugPrint() um
EndFunction
Print = p_Print               ; alle Print() rufen nun p_Print() auf
Print("Hello World!")         ; Print() leitet nun nach p_Print() um

Was die in Klammer eingeschlossenen drei Punkte ... bedeuten, können sie unter Variable Anzahl von Argumenten (...) nachlesen.

Oder eine noch einfachere Lösung:

 
Print = DebugPrint    ; leitet alle Aufrufe von Print()...
                      ; ... nach DebugPrint() um
Print("Hello World!") ; ruft direkt DebugPrint() auf


Navigation zeigen