blob: dbb53d047eac567cbc72853019ff171205a87ee9 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 closure symbol_function(symbol arg);
3 closrue symbol_function(string arg);
4 closure symbol_function(string arg, object|string obj);
5
6BESCHREIBUNG
7 Erzeugt eine Lfun-, Efun- oder Operator-Closure aus <arg>, wobei
8 <arg> entweder ein string oder ein symbol sein muss. Fuer
9 Lfun-Closures gibt <obj> an, zu welchem Objekt die Lfun gehoert,
10 entweder angegeben durch das Objekt selbst (bzw. einen pointer
11 darauf) oder durch den Objektnamen als String. Wenn ein String
12 angegeben wird, wird das Objekt beim Aufruf geladen.
13
14 Wenn die Closure fuer eine Lfun in einem anderen als dem momentanen
15 Objekt erzeugt wird, ergibt dies eine "alien lfun closure". Solche
16 Closures sind an das Objekt gebunden, das symbol_function()
17 aufgerufen hat (dieses Objekt wird von to_object() geliefert),
18 obwohl der eigentliche Code in einem anderen Objekt steht (das mit
19 get_type_info() gefunden werden kann).
20
21 Als "private" deklarierte Funktionen koennen auf diese Weise nie
22 zu einer Closure gewandelt werden, "static" und "protected"
23 deklarierte Lfuns nur dann, wenn <obj> das gueltige Objekt
24 (d.h. this_object()) ist.
25 Expord.h. tiert man die Closures, koennen sie unabhaengig vom Modifier der
26 Ursprungsfunktionen von jedem gerufen werden.
27 umgehen).
28
29BEISPIELE
30 symbol_function("efun::users");
31 --> ergibt: #'users
32 symbol_function("QueryProp", other_obj);
33 --> ergibt: other_obj->QueryProp()
34
35SIEHE AUCH
36 lambda(E), quote(E)