efun: filter.de
SYNOPSIS:
mixed *filter(mixed *arg, string func, string|object ob,
mixed extra...);
mixed *filter(mixed *arg, closure cl, mixed extra...);
mixed *filter(mixed *arg, mapping map, mixed extra...);
mapping filter(mapping arg, string func, string|object ob,
mixed extra...);
mapping filter(mapping arg, closure cl, mixed extra...);
BESCHREIBUNG:
Ruft fuer jedes Element des Arrays oder Mappings <arg> die Funktion
<ob>-><func>() bzw. die Closure <cl> auf und liefert jene Elemente,
fuer die die Funktion / Closure TRUE ergeben hat. Die <extra>
Argumente werden als zusaetzliche Parameter an die Funktion
uebergeben und duerfen keine Referenzen von Array- oder Mapping-
Elementen sein (wie &(i[1]) ).
Wird <ob> nicht angegeben oder ist es weder ein String noch ein
Objekt, wird standardmaessig this_object() verwendet.
Ist <arg> ein Array, wird <fun> mit jedem Element des Arrays als
ersten Parameter aufgerufen, gefolgt von den <extra> Argumenten.
Wenn das Resultat der Funktion TRUE ergibt, wird das Element in das
Ergebnis der filter() Operation mit einbezogen.
Wird filter() mit einem Mapping <map> anstelle der Funktion <func>
aufgerufen, wird jedes Element im Array <arg>, das ein Key von <map>
ist, ins Ergebnis mit einbezogen.
Wenn <arg> ein Mapping ist, wird die Funktion <func> mit jedem Key
als erstem und (falls vorhanden) den Werten dieses Keys als restliche
Parameter, gefolgt von den <extra> Argumenten, aufgerufen. Wenn die
Funktion TRUE ergibt, wird das betreffende Element des Mappings ins
Ergebnis aufgenommen.
Abhaengig von der Groesse des Mappings <arg> erfolgt der Aufruf der
Funktion auf drei unterschiedliche Arten:
widthof(arg) == 0: ob->func(key, 0, extra,...);
widthof(arg) == 1: ob->func(key, arg[key], extra, ...);
widthof(arg) >1: ob->fund(key, ({arg[key,0]...arg[key, n-1]}),
extra, ...);
Der Vorteil dieser Vorgehensweise ist, dass beide Typen von
multidimensionalen Mappings (Mappings mit mehreren Werte pro Key und
Mappings aus Arrays) gleich verarbeitet werden koennen.
AENDERUNGEN:
Eingefuehrt in LDMud 3.2.6. Die Funktion loest filter_array() ab.
ANMERKUNG:
Fuer Arrays wirkt filter() wie filter_array(), fuer Mappings stellt
filter() eine Verallgemeinerung von filter_indices() dar.
SIEHE AUCH:
filter(E), filter_indices(E), map(E), walk_mapping(E), member(E),
m_contains(E)
UNItopia (mudadm@UNItopia.de)