12.1 Übersicht

Funktionen können verwendet werden, um Ihr Programm in mehrere kleinere Codeabschnitte zu teilen, womit die Lesbarkeit und Struktur des Codes erhöht wird. Eine Funktion kann als kleines eigenes Programm angesehen werden. Es kann Variablen verwenden, die lokal sind. Das bedeutet, dass sie nur innerhalb der Funktion zur Verfügung stehen und von außen kann nicht auf sie zugegriffen werden. Natürlich können Sie auf globale Variablen aus einer Funktion zugreifen. Synonym für den Begriff "Funktion" sind die Begriffe wie "Prozedur", "(Unter)Routine" oder "Anweisung". Funktionen können nichts oder eine beliebige Anzahl von Werten beliebigen Typs zurückgeben. Beachten Sie, dass die Befehle von Hollywood auch Funktionen sind.

Sie können Ihre eigenen Funktionen unter Verwendung der Anweisungen Function und EndFunction erstellen:

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

Sie sollten immer das Präfix p_ in den eigenen Funktionsnamen verwenden, vor allem dann, wenn Sie englische Namen verwenden. Dies hilft, zwischen den eigenen Funktionen und die in Hollywood integrierten Befehlen zu unterscheiden. Auch in zukünftigen Versionen von Hollywood könnte es neue Befehle geben, die den gleichen Namen wie ihre Funktionen in Ihrem Code haben. Dies könnte zu unerwarteten Ergebnissen führen. So sollten Sie immer p_ in Ihren Funktionsnamen verwenden, so dass keine Verwirrungen entstehen. Das p_ steht für "Private Funktion".

Funktionen werden deklariert, bevor sie aufgerufen werden, so dass der folgende Code Ihnen ein Fehler melden wird:

 
c = p_Add(5, 2)
Function p_Add(a, b)
    Return(a + b)
EndFunction

Hollywood wird versuchen, die Funktion p_Add() aufzurufen, wird sie aber nicht finden, weil sie noch nicht deklariert wurde. Die beiden Variablen a und b werden in der Funktion lokal sein, was bedeutet, dass Sie nur in der p_Add() Funktion auf sie zugreifen können. Wenn Sie mehr Argumente an die Funktion übergeben, als sie es erwartet,

 
c = p_Add(5, 2, 4)     ; c erhält den Wert 7

dann werden alle überflüssigen Argumente verworfen. In diesem Fall wird das Argument Nummer 3 weggeworfen. Wenn Sie weniger Argumente an die Funktion übergeben, als es erwartet,

 
c = p_Add(5)           ; c erhält den Wert 5, weil 5 + Nil = 5

dann wird Hollywood den besonderen Wert Nil für alle Argumente verwenden, die keinen Wert erhalten haben.

Funktionen können Werte mit der Return()-Anweisung zurückgeben. Es ist unbedingt erforderlich, dass die Rückgabewerte in Klammern eingeschlossen sind. Wenn Sie mehrere Werte zurückgeben müssen, trennen Sie diese einfach durch Kommata. Beispielsweise:

 
Function p_SomeValues()
    Return(5, 6, 7, 8, 9, 10)
EndFunction

Wenn Sie Funktionen mit mehreren Rückgabeargumenten aufrufen und Sie nicht alle abfragen/zuweisen, werden diese unzugewiesenen Werte verworfen:

 
a, b, c = p_SomeValues()

Die Zeile weist 5 a, 6 b und 7 c zu. Die Rückgabewerte 8, 9 und 10 werden verworfen. Wenn Sie mehr Variablen angeben, als die Funktion zurückgeben kann, werden die überflüssigen Variablen den besonderen Wert Nil erhalten:

 
a, b, c, d, e, f, g, h = p_SomeValues()  ; "g" und "h" sind Nil

Diese Zeile hat zwei überflüssige Variablen g und h. Sie werden den Wert Nil erhalten, weil die Funktion p_SomeValues() nur sechs Werte zurückgibt.

Natürlich können Sie auch Funktionen definieren, die keinen Wert zurückgeben. Beispielsweise:

 
Function p_WaitSecs(s)
    Wait(s, #SECONDS)
EndFunction

Wenn Sie versuchen, hier einen Rückgabewert zu erhalten, bekommen Sie nur Nil zurück:

 
a = p_WaitSecs(5)

Die Variable a wird Nil beinhalten, weil p_WaitSecs() keinen Wert zurückgibt.


Navigation zeigen