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