# Schlüsselwortreferenz

Func...Return...EndFunc

Definiert eine eigene Funktion, die Argumente aufnehmen kann und optional ein Ergebnis zurückgibt.

Func functioname ( [ByRef] $param1, ..., [ByRef] $paramN, $optionalpar1 = value, ...)
...
[Return [value]]
EndFunc

Parameter

Die Parameter werden von dir selbst gewählt. Später rufst du sie genau wie die eingebauten Funktionen auf.

Bemerkungen

Das Schlüsselwort ByRef ist optional und bedeutet, dass der Parameter 1. eine Variable sein muss und die Variable 2. von der Funktion geändert werden kann. Standardmäßig wird ein Parameter durch seinen Wert übergeben, d.h. dass eine Kopie des Parameterwertes von der Funktion manipuliert wird.
Das Schlüsselwort Return wird benutzt, um die Funktion zu verlassen. Im Gegensatz zu eingbauten Funktionen geben eigene Funktionen immer 0 zurück, wenn nichts anderes veranlasst wird.
Arrays können den Funktionen über- und von ihnen zurückgegeben werden, indem einfach der Arrayname ohne Klammern angegeben wird. Beachte, dass innerhalb einer Funktion keine weitere Funktionsdeklaration stehen kann!
Parameter werden als optional definiert, indem man ihnen einen standardwert zuweist. Das kann auch ein Makro sein. Diese können nicht in obligatorische Parameter eingebunden werden. Optionale Parameter sind immer die letzten in der Funktionsdeklaration. Innerhalb der Funktion kann die Anzahl der beim Aufruf angegebene Parameter über das Makro @NUMPARAMS in Erfahrung gebracht werden..

Siehe auch

Dim/Global/Local, #include

Beispiel

; Beipselskript mit drei nutzerdefinierten Funktionen
; Beachte die Verwendung von Variablen, ByRef und Return
$foo = 2
$bar = 5
msgBox(0,"Heute ist " & today(), "$foo ergibt " & $foo)
swap($foo, $bar)
msgBox(0,"nachdem $foo und $bar vertauscht wurden", "$foo now contains " & $foo)
msgBox(0,"Zu guter Letzt:", "Die größere Zahl von 3 und 4 ist " & max(3,4))
Exit
Func swap(ByRef $a, ByRef $b) ;vertauscht den Inhalt zweier Variablen
Local $t
$t = $a
$a = $b
$b = $t
EndFunc
Func today() ;Gibt das aktuelle Datum in der Form dd/mm/yyyy zurück
return (@MDAY & "/" & @MON & "/" & @YEAR)
EndFunc
Func max($x, $y) ;Gibt die größere von zwei Zahlen zurück
If $x > $y Then
return $x
Else
return $y
EndIf
EndFunc
;Ende des Beispiel-Skriptes