class Func extends Object
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.
Informationen über andere Objekte, die wie Funktionen aufgerufen werden können, finden Sie unter Funktionsobjekte.
Die Closure
-Klasse erweitert Func
, definiert aber keine neuen Eigenschaften.
Für jede interne Funktion oder Funktionsdefinition innerhalb des Skripts gibt es eine zugehörige schreibgeschützte Variable, die ein Func-Objekt enthält. Diese Variable wird direkt für den Aufruf der Funktion verwendet, aber ihr Wert kann auch gelesen werden, um die Funktion selbst als Wert abzurufen. Zum Beispiel:
PrüfeFn StrLen PrüfeFn PrüfeFn PrüfeFn(fn) { ; Informationen über die übergebene Funktion anzeigen. MsgBox fn.Name " ist eine " (fn.IsBuiltIn ? "interne" : "benutzerdefinierte") " Funktion." }
"FuncObj" wird hier stellvertretend für ein beliebiges Func-Objekt verwendet, da "Func" die Klasse selbst ist.
Zusätzlich zu den von Object geerbten Methoden und Eigenschaften haben Func-Objekte die folgenden vordefinierten Methoden und Eigenschaften.
Ruft die Funktion auf.
FuncObj(Param1, Param2, ...)
FuncObj.Call(Param1, Param2, ...)
Parameter und Rückgabewerte werden durch die Funktion definiert.
Die Call-Methode wird automatisch beim Aufruf eines Wertes verwendet und muss daher nicht explizit angegeben werden.
Bindet Parameter an die Funktion.
BoundFunc := FuncObj.Bind(Param1, Param2, ...)
Beliebig viele Parameter.
Typ: Objekt
Diese Methode gibt ein BoundFunc-Objekt zurück.
Ermittelt, ob der Parameter ein ByRef-Parameter ist.
Boolesch := FuncObj.IsByRef(ParamIndex)
Typ: Integer
Wenn weggelassen, gibt Boolesch an, ob die Funktion irgendwelche ByRef-Parameter hat. Andernfalls geben Sie die 1-basierte Indexnummer eines Parameters an.
Typ: Integer (boolesch)
Diese Methode gibt 1 (true) zurück, wenn der Parameter ByRef ist, andernfalls 0 (false). Wenn ParamIndex ungültig ist, wird eine Ausnahme ausgelöst.
Ermittelt, ob der Parameter ein optionaler Parameter ist.
Boolesch := FuncObj.IsOptional(ParamIndex)
Typ: Integer
Wenn weggelassen, gibt Boolesch an, ob die Funktion optionale Parameter hat. Andernfalls geben Sie die 1-basierte Indexnummer eines Parameters an.
Typ: Integer (boolesch)
Diese Methode gibt 1 (true) zurück, wenn der Parameter optional ist, andernfalls 0 (false). Wenn ParamIndex ungültig ist, wird eine Ausnahme ausgelöst.
Parameter müssen nicht formal deklariert werden, wenn die Funktion variadisch ist. Interne Funktionen werden unterstützt.
Gibt den Namen der Funktion zurück.
FunktionName := FuncObj.Name
Gibt 1 (true) zurück, wenn die Funktion eine interne Funktion ist, andernfalls 0 (false).
Boolesch := FuncObj.IsBuiltIn
Gibt 1 (true) zurück, wenn die Funktion variadisch ist, andernfalls 0 (false).
Boolesch := FuncObj.IsVariadic
Gibt die Anzahl der Pflichtparameter zurück.
ParamAnzahl := FuncObj.MinParams
Gibt die Anzahl der formal deklarierten Parameter einer benutzerdefinierten Funktion oder die maximale Anzahl der Parameter einer internen Funktion zurück.
ParamAnzahl := FuncObj.MaxParams
Wenn die Funktion variadisch ist, ist ParamAnzahl die Anzahl von Parametern, die die Funktion maximal akzeptieren kann, ohne in den "variadischen*" Parameter überzulaufen.