User manual
Kapitel 4 Pawn Script
4.4.7.1 Funktionsargumente ("call-by-value" versus "call-by-reference")
Die "faculty"-Funktion im nächsten Beispiel hat einen Parameter, der in der Schleife benutzt wird
um die Fakultät dieser Zahl zu berechnen. Was Aufmerksamkeit verdient ist, dass die Funktion das
Argument modifiziert.
main()
{
new v = 5
new f = faculty(v)
}
faculty(n)
{
assert n >= 0
new result = 1
while (n > 0)
result *= n--
return result
}
Egal welchen (positiven) Wert die Variable "n" am Beginn der "while"-Schleife hatte, am Ende der
Funktion wird "n" Null sein. Am Beispiel der Funktion "faculty" wird der Parameter als Wert ("by
value") übergeben, damit ist eine Änderung der Variable "n" nur lokal in der Funktion "faculty"
gültig. Mit anderen Worten, die Variable "v" in der Funktion "main()" hat vor und nach dem Aufruf
der Funktion denselben Wert.
Argumente können als Wert ("by value") oder als Referenz ("by reference") übergeben werden.
Einem Funktionsargument, das als Referenz übergeben werden soll, muss als Präfix "&" dem
Namen vorangestellt werden. Als Standard werden der Funktion die Argumente als Wert übergeben.
Beispiel:
swap(&a, &b)
{
new temp = b
b = a
a = temp
}
Um eine Array einer Funktion zu übergeben, fügen Sie ein Klammernpaar ("[]") dem Namen des
Arguments an. Es kann auch zusätzlich die Anzahl der Einträge angegeben werden. Dies verbessert
die Fehlererkennung des Parsers des Compilers.
Rev. 01 109