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)