Methode

Jede Methode ist ein Teil einer generischen Funktion (siehe generische Funktion). Diese fasst alle Methoden mit gleichem Namen zusammen. Methoden haben eine spezialisierte Parameterliste, einen Guard und einen Rumpf.

Wenn eine generische Funktion aufgerufen wird, dann wird anhand der Typen und ggf. Klassen der Argumente bestimmt, welche Methoden kompatibel sind. Dabei werden die in der spezialisierten Parameterliste angegebenen Klassen verwendet.

Für die kompatiblen Methoden wird in der Reihenfolge von der Spezialisiertesten zur Allgemeinsten (siehe call-next-method) überprüft, ob der Guard zu einem Wert ungleich nil auswertet. Wenn ja, wird die Methode aufgerufen. Andere Methoden werden dann nicht mehr berücksichtigt.

Wenn keine Methode zu den übergebenen Argumenten kompatibel ist oder die Auswertung aller Guards den Wert nil ergibt, wird eine Ausnahme ausgelöst.

Methoden treten als Argumente oder Resultate bei den folgenden Funktionen auf:

body,
call-next-method,
defmethod,
generic-function-methods,
method-guard,
method-specializers,
parameters,
remove-method und
respond-to?