Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc/efun/applySYNOPSIS
mixed apply(closure cl, mixed arg, ...)
BESCHREIBUNG
Wertet die Closure aus. Wenn keine Closure ist, wird
unveraendert zurueck geliefert und alle Argumente werden
ignoriert.
Es gibt einen kleinen Unterschied zu funcall(), das ja im Wesentlichen
das gleiche tut (naemlich, eine Closure auswerten): wenn das letzte
Argument von apply() ein Array ist, wird jedes Element dieses Arrays
zu einem separaten zusaetzlichen Parameter der Closure umgewandelt.
Eine moegliche Anwendung waere:
mixed eval(object ob,string func,mixed *args)
{
return apply(#'call_other,ob,func,args);
}
Das fuehrt zu folgenden Aufrufen:
ob->func(args[0],args[1],...,args[sizeof(args)-1])
Waere stattdessen funcall() aufgerufen worden, so haette das ergeben:
ob->func(args)
Eine wichtige Anwendung von apply() ist das Auswerten des
Array-Arguments in "varargs" Funktionen.
GESCHICHTE
Eingefuehrt in 3.2@70.
LDMud 3.2.8 fuehrte ein, dass das erste Argument zurueck gegeben wird,
wenn es sich nicht um eine Closure handelt.
SIEHE AUCH
funcall(E), closures(LPC), varargs(LPC)
zurück zur Übersicht