Ruft die Implementierungsfunktion einer Methode ab.
Methode := GetMethod(Wert , Name, ParamAnzahl)
Typ: Beliebig
Ein Wert beliebigen Typs, außer vom Typ ComObject.
Typ: Zeichenkette
Wenn weggelassen, wird die Validierung an Wert selbst durchgeführt und bei Erfolg Wert zurückzugeben. Andernfalls geben Sie den Namen der abzurufenden Methode an.
Wenn weggelassen (oder wenn die Parameteranzahl nicht verifiziert wurde), wird eine grundlegende Prüfung für eine Call-Methode durchgeführt, um zu verifizieren, dass das Objekt sehr wahrscheinlich aufrufbar ist.
Andernfalls geben Sie die Anzahl der Parameter an, die der Methode oder Funktion voraussichtlich übergeben werden. Wenn angegeben, können die MinParams-, MaxParams- und IsVariadic-Eigenschaft der Methode abgefragt werden, um zu verifizieren, ob die Methode diese Anzahl von Parametern akzeptieren kann. Wenn diese Eigenschaften nicht vorhanden sind, wird die Anzahl der Parameter nicht verifiziert.
Diese Anzahl sollte den impliziten this
-Parameter nicht enthalten.
Typ: Funktionsobjekt
Diese Funktion gibt das Funktionsobjekt zurück, das die Implementierung der Methode enthält, oder Wert selbst, wenn Name weggelassen wurde.
Wenn die Methode nicht gefunden wird oder nicht ohne indirekten Aufruf eines Eigenschafts-Getters abgerufen werden kann, wird ein MethodError ausgelöst.
Wenn eine Validierung versucht wird, können Ausnahmen durch die Abfrage der Eigenschaften der Methode ausgelöst werden. Es wird ein ValueError oder MethodError ausgelöst, wenn die Validierung fehlschlägt.
Methoden können auf eine der folgenden Arten definiert werden:
{Call: fn}
an DefineProp, wobei fn die Methode implementiert.Beim Aufruf des Funktionsobjekts muss ein Wert für den normalerweise versteckten this-Parameter übergeben werden. Zum Beispiel Methode(Wert, Params*)
.
Obwohl die Standardimplementierung von GetMethod Einschränkungen hat (wie oben beschrieben), kann, wenn Wert.GetMethod(Name)
anstelle von GetMethod(Wert, Name)
verwendet wird, das Wert-Objekt seine eigene Implementierung von GetMethod definieren.
GetMethod(Wert, "Call", N)
ist nicht dasselbe wie GetMethod(Wert,, N)
, da die Call-Methode das Funktionsobjekt selbst als Parameter nimmt und die Verwendung ansonsten von der von Wert abweichen kann. Func.Prototype.Call
ist z.B. eine Einzelmethode, die für alle internen und benutzerdefinierten Funktionen gilt und als solche eine beliebige Anzahl von Parametern akzeptieren muss.
Objekte, HasMethod, HasBase, HasProp
Ermittelt und meldet Informationen über die GetMethod-Methode.
Methode := GetMethod({}, "GetMethod") ; Sie ist auch eine Methode. MsgBox Methode.MaxParams ; Nimmt 2 Parameter, einschließlich 'this'. MsgBox Methode = GetMethod ; Tatsächlich dasselbe Objekt in diesem Fall.