<script src="../static/ga4.js" type="text/javascript"></script> </head> <body> <h1>GetMethod</h1> <p>Ruft die Implementierungsfunktion einer Methode ab.</p> <pre class="Syntax">Methode := <span class="func">GetMethod</span>(Wert <span class="optional">, Name, ParamAnzahl</span>)</pre> <h2 id="Parameters">Parameter</h2> <dl> <dt>Wert</dt> <dd> <p>Typ: <a href="../Concepts.htm#values">Beliebig</a></p> <p>Ein Wert beliebigen Typs, außer vom Typ ComObject.</p> </dd> <dt>Name</dt> <dd> <p>Typ: <a href="../Concepts.htm#strings">Zeichenkette</a></p> <p>Wenn weggelassen, wird die Validierung an <em>Wert</em> selbst durchgeführt und bei Erfolg <em>Wert</em> zurückzugeben. Andernfalls geben Sie den Namen der abzurufenden Methode an.</p> <p></p> </dd> <dt>ParamAnzahl</dt> <dd> <tp>Typ: <a href="../Concepts.htm#numbers">Integer</a></tp> <p>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.</p> <p>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.</p> <p>Diese Anzahl sollte den impliziten <code>this</code>-Parameter nicht enthalten.</p> </dd> </dl> <h2 id="Return_Value">Rückgabewert</h2> <p>Typ: <a href="../misc/Functor.htm">Funktionsobjekt</a></p> <p>Diese Funktion gibt das Funktionsobjekt zurück, das die Implementierung der Methode enthält, oder <em>Wert</em> selbst, wenn <em>Name</em> weggelassen wurde.</p> <h2 id="Errors">Fehlerbehandlung</h2> <p>Wenn die Methode nicht gefunden wird oder nicht ohne indirekten Aufruf eines Eigenschafts-Getters abgerufen werden kann, wird ein <a href="Error.htm#MethodError">MethodError</a> ausgelöst.</p> <p>Wenn eine Validierung versucht wird, können Ausnahmen durch die Abfrage der Eigenschaften der Methode ausgelöst werden. Es wird ein <a href="Error.htm#ValueError">ValueError</a> oder <a href="Error.htm#MethodError">MethodError</a> ausgelöst, wenn die Validierung fehlschlägt.</p> <h2 id="Remarks">Bemerkungen</h2> <p>Methoden können auf eine der folgenden Arten definiert werden:</p> <ul> <li>Eine dynamische Eigenschaft mit einer <em>Call</em>-Akzessorfunktion. Dazu gehören: <ul> <li>Eine Eigenschaft, erstellt durch eine <a href="../Objects.htm#Custom_Classes_method">Methodendefinition</a> innerhalb einer Klasse.</li> <li>Eine Eigenschaft, erstellt durch die Übergabe eines Deskriptors wie <code>{Call: fn}</code> an <a href="Object.htm#DefineProp">DefineProp</a>, wobei <em>fn</em> die Methode implementiert.</li> <li>Eine vordefinierte/interne Methode.</li> </ul> </li> <li>Eine eigene Werteigenschaft des Objekts oder eines seiner Basisobjekte, wobei der Wert ein <a href="../misc/Functor.htm">Funktionsobjekt</a> ist.</li> <li>Eine dynamische Eigenschaft mit einem Getter, der ein Funktionsobjekt zurückgibt. Dieser Fall wird von GetMethod nicht unterstützt.</li> <li>Behandlung innerhalb einer __Call-<a href="../Objects.htm#Meta_Functions">Metafunktion</a>. Methoden, die auf diese Weise implementiert werden, können nicht erkannt werden und haben möglicherweise noch nicht einmal ein zugehöriges Funktionsobjekt, weshalb sie von GetMethod nicht unterstützt werden.</li> </ul> <p>Beim Aufruf des Funktionsobjekts muss ein Wert für den normalerweise versteckten <em>this</em>-Parameter übergeben werden. Zum Beispiel <code>Methode(Wert, Params*)</code>.</p> <p>Obwohl die Standardimplementierung von GetMethod Einschränkungen hat (wie oben beschrieben), kann, wenn <code>Wert.GetMethod(Name)</code> anstelle von <code>GetMethod(Wert, Name)</code> verwendet wird, das <em>Wert</em>-Objekt seine eigene Implementierung von GetMethod definieren.</p> <p><code>GetMethod(Wert, "Call", N)</code> ist nicht dasselbe wie <code>GetMethod(Wert,, N)</code>, da die Call-Methode das Funktionsobjekt selbst als Parameter nimmt und die Verwendung ansonsten von der von <em>Wert</em> abweichen kann. <code>Func.Prototype.Call</code> ist z.B. eine Einzelmethode, die für alle internen und benutzerdefinierten Funktionen gilt und als solche eine beliebige Anzahl von Parametern akzeptieren muss.</p> <h2 id="Related">Siehe auch</h2> <p><a href="../Objects.htm">Objekte</a>, <a href="HasMethod.htm">HasMethod</a>, <a href="HasBase.htm">HasBase</a>, <a href="HasProp.htm">HasProp</a></p> <h2 id="Examples">Beispiele</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> Ermittelt und meldet Informationen über die <a href="Any.htm#GetMethod">GetMethod-Methode</a>.</p> <pre> Methode := GetMethod({}, "GetMethod") <em>; Sie ist auch eine Methode.</em> MsgBox Methode.MaxParams <em>; Nimmt 2 Parameter, einschließlich 'this'.</em> MsgBox Methode = GetMethod <em>; Tatsächlich dasselbe Objekt in diesem Fall.</em> </pre> </div> </body> </html>