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)