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.