| SYNOPSIS |
| mixed apply(closure cl, mixed arg, ...) |
| |
| BESCHREIBUNG |
| Wertet die Closure <cl> aus. Wenn <cl> keine Closure ist, wird <cl> |
| unveraendert zurueck geliefert und alle Argumente <arg> 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) |