blob: aaa30a5154a02bf3c36a05ea63456ea459442d73 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 mixed apply(closure cl, mixed arg, ...);
3
4BESCHREIBUNG
5 Wertet die Closure <cl> aus. Wenn <cl> keine Closure ist, wird <cl>
6 unveraendert zurueck geliefert und alle Argumente <arg> werden
7 ignoriert.
8
9 Es gibt einen kleinen Unterschied zu funcall(), das ja im Wesentlichen
10 das gleiche tut (naemlich, eine Closure auswerten): wenn das letzte
11 Argument von apply() ein Array ist, wird jedes Element dieses Arrays
12 zu einem separaten zusaetzlichen Parameter der Closure umgewandelt.
13
14 Eine moegliche Anwendung waere:
15 mixed eval(object ob,string func,mixed *args)
16 {
17 return apply(#'call_other,ob,func,args);
18 }
19
20 Das fuehrt zu folgenden Aufrufen:
21 ob->func(args[0],args[1],...,args[sizeof(args)-1])
22
23 Waere stattdessen funcall() aufgerufen worden, so haette das ergeben:
24 ob->func(args)
25
26 Eine wichtige Anwendung von apply() ist das Auswerten des
27 Array-Arguments in "varargs" Funktionen.
28
29AENDERUNGEN
30 Eingefuehrt in 3.2@70.
31 LDMud 3.2.8 fuehrte ein, dass das erste Argument zurueck gegeben wird,
32 wenn es sich nicht um eine Closure handelt.
33
34SIEHE AUCH
35 funcall(E), closures(LPC), varargs(LPC)