Func-Objekt [v1.1.00+]

Repräsentiert eine benutzerdefinierte oder interne Funktion und bietet eine Schnittstelle, um sie aufzurufen, Parameter an sie zu binden und Informationen über sie oder ihre Parameter abzurufen. Func() gibt ein Objekt dieses Typs zurück.

Informationen über andere Objekte, die wie Funktionen aufgerufen werden können, finden Sie unter Funktionsobjekte.

Eine Referenz zu einem Func-Objekt wird auch als Funktionsreferenz bezeichnet. Um eine Funktionsreferenz abzurufen, verwenden Sie die Func-Funktion wie folgt:

; Ruft eine Referenz zu der Funktion "StrLen" ab.
fn := Func("StrLen")

; Informationen über die Funktion anzeigen.
MsgBox % fn.Name "() ist eine " (fn.IsBuiltIn ? "interne" : "benutzerdefinierte") " Funktion."

Inhaltsverzeichnis

Methoden

Call

Ruft die Funktion auf.

Func.Call(Param1, Param2, ...)  ; Benötigt [v1.1.19+]
Func.(Param1, Param2, ...)  ; Alte Form - veraltet

Parameter

Param1, Param2, ...

Parameter und Rückgabewerte werden durch die Funktion definiert.

Bemerkungen

[v1.1.07+]: %Func%() kann verwendet werden, um eine Funktion via Name oder Referenz aufzurufen, oder um ein Objekt aufzurufen, das die __Call-Metafunktion implementiert. Dies sollte anstelle von Func.() verwendet werden, wo immer das möglich ist.

Bind [v1.1.20+]

Bindet Parameter an die Funktion.

BoundFunc := Func.Bind(Param1, Param2, ...)

Parameter

Param1, Param2, ...

Beliebig viele Parameter.

Rückgabewert

Diese Methode gibt ein BoundFunc-Objekt zurück.

IsByRef

Ermittelt, ob der Parameter ein ByRef-Parameter ist.

Boolesch := Func.IsByRef(ParamIndex)

Parameter

ParamIndex

Wenn weggelassen, gibt Boolesch an, ob die Funktion irgendwelche ByRef-Parameter hat. Andernfalls geben Sie die 1-basierte Indexnummer eines Parameters an.

Rückgabewert

Diese Methode gibt eine leere Zeichenkette zurück, wenn die Funktion eine interne Funktion ist oder ParamIndex ungültig ist; andernfalls einen booleschen Wert, der angibt, ob der Parameter ein ByRef-Parameter ist.

IsOptional

Ermittelt, ob der Parameter ein optionaler Parameter ist.

Boolesch := Func.IsOptional(ParamIndex)

Parameter

ParamIndex

Wenn weggelassen, gibt Boolesch an, ob die Funktion optionale Parameter hat. Andernfalls geben Sie die 1-basierte Indexnummer eines Parameters an.

Rückgabewert

Diese Methode gibt eine leere Zeichenkette zurück, wenn ParamIndex ungültig ist; andernfalls einen booleschen Wert, der angibt, ob der Parameter ein optionaler Parameter ist.

Bemerkungen

Parameter müssen nicht formal deklariert werden, wenn die Funktion variadisch ist. Interne Funktionen werden unterstützt.

Eigenschaften

Name

Gibt den Namen der Funktion zurück.

FunktionName := Func.Name

IsBuiltIn

Gibt 1 (true) zurück, wenn die Funktion eine interne Funktion ist, andernfalls 0 (false).

Boolesch := Func.IsBuiltIn

IsVariadic

Gibt 1 (true) zurück, wenn die Funktion variadisch ist, andernfalls 0 (false).

Boolesch := Func.IsVariadic

MinParams

Gibt die Anzahl der Pflichtparameter zurück.

ParamAnzahl := Func.MinParams

MaxParams

Gibt die Anzahl der formal deklarierten Parameter einer benutzerdefinierten Funktion oder die maximale Anzahl der Parameter einer internen Funktion zurück.

ParamAnzahl := Func.MaxParams

Wenn die Funktion variadisch ist, ist ParamAnzahl die Anzahl von Parametern, die die Funktion maximal akzeptieren kann, ohne in den "variadischen*" Parameter überzulaufen.

Funktionen

Func [v1.1.00+]

Ruft eine Funktionsreferenz ab.

Referenz := Func(FunktionName)

Parameter

FunktionName

Name der Funktion, deren Referenz abgerufen werden soll. Die Funktion muss im Skript explizit existieren.

Rückgabewert

Func gibt eine Referenz zu FunktionName zurück. Wenn FunktionName nicht explizit im Skript existiert (durch Mittel wie #Include oder einen nicht-dynamischen Aufruf einer Bibliotheksfunktion), wird 0 zurückgegeben.

Bemerkungen

Func kann verwendet werden, um die Funktion aufzurufen oder um Informationen wie die minimale und maximale Anzahl von Parametern abzurufen.

Die folgende Funktion ruft eine Funktionsreferenz ab und zeigt Informationen über diese Funktion an:

fn := Func("StrLen")
MsgBox % fn.Name "() ist eine " (fn.IsBuiltIn ? "interne" : "benutzerdefinierte") " Funktion."