blob: dbb53d047eac567cbc72853019ff171205a87ee9 [file] [log] [blame]
SYNOPSIS
closure symbol_function(symbol arg);
closrue symbol_function(string arg);
closure symbol_function(string arg, object|string obj);
BESCHREIBUNG
Erzeugt eine Lfun-, Efun- oder Operator-Closure aus <arg>, wobei
<arg> entweder ein string oder ein symbol sein muss. Fuer
Lfun-Closures gibt <obj> an, zu welchem Objekt die Lfun gehoert,
entweder angegeben durch das Objekt selbst (bzw. einen pointer
darauf) oder durch den Objektnamen als String. Wenn ein String
angegeben wird, wird das Objekt beim Aufruf geladen.
Wenn die Closure fuer eine Lfun in einem anderen als dem momentanen
Objekt erzeugt wird, ergibt dies eine "alien lfun closure". Solche
Closures sind an das Objekt gebunden, das symbol_function()
aufgerufen hat (dieses Objekt wird von to_object() geliefert),
obwohl der eigentliche Code in einem anderen Objekt steht (das mit
get_type_info() gefunden werden kann).
Als "private" deklarierte Funktionen koennen auf diese Weise nie
zu einer Closure gewandelt werden, "static" und "protected"
deklarierte Lfuns nur dann, wenn <obj> das gueltige Objekt
(d.h. this_object()) ist.
Expord.h. tiert man die Closures, koennen sie unabhaengig vom Modifier der
Ursprungsfunktionen von jedem gerufen werden.
umgehen).
BEISPIELE
symbol_function("efun::users");
--> ergibt: #'users
symbol_function("QueryProp", other_obj);
--> ergibt: other_obj->QueryProp()
SIEHE AUCH
lambda(E), quote(E)