SYNOPSIS mixed * filter(mixed *arg, string fun, string|object ob , mixed extra...) mixed * filter(mixed *arg, closure cl, mixed extra...) mixed * filter(mixed *arg, mapping map, mixed extra...) string filter(string arg, string fun, string|object ob , mixed extra...) string filter(string arg, closure cl, mixed extra...) string filter(string 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 die Funktion ->() bzw. die Closure auf und liefert jene Elemente, fuer die die Funktion / Closure TRUE ergeben hat. Die Argumente werden als zusaetzliche Parameter an die Funktion uebergeben und duerfen keine Referenzen von Array- oder Mapping- Elementen sein (wie &(i[1]) ). Wird nicht angegeben oder ist es weder ein String noch ein Objekt, wird standardmaessig this_object() verwendet. Ist ein Array oder struct, wird mit jedem Element des Arrays/der struct als ersten Parameter aufgerufen, gefolgt von den Argumenten. Wenn das Resultat der Funktion TRUE ergibt, wird das Element in das Ergebnis der filter() Operation mit einbezogen. Wird filter() mit einem Mapping anstelle der Funktion aufgerufen, wird jedes Element im Array , das ein Key von ist, ins Ergebnis mit einbezogen. Wenn ein Mapping ist, wird die Funktion mit jedem Key als erstem und (falls vorhanden) den Werten dieses Keys als zweitem Parameter, gefolgt von den Argumenten, aufgerufen. Wenn die Funktion TRUE ergibt, wird das betreffende Element des Mappings ins Ergebnis aufgenommen. Abhaengig von der Groesse des Mappings erfolgt der Aufruf der Funktion auf drei unterschiedliche Arten: widthof(arg) == 0: ob->func(key, 0, extra...) == 1: ob->func(key, arg[key], extra...) > 1: ob->func( key , ({ arg[key,0] ...arg[key,width-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. Ist ein String, werden der Filterfunktion die einzelnen Zeichen des Strings uebergeben und nur jene Zeichen im zurueckgegebenen String aufgenommen, fuer die die Filterfunkton != 0 zurueckgibt. ANMERKUNGEN Fuer Arrays wirkt filter() wie filter_array(), fuer Mappings stellt filter() eine Verallgemeinerung von filter_indices() dar. GESCHICHTE Eingefuehrt in LDMud 3.2.6. Die Funktion loest filter_array() ab. SIEHE AUCH filter(E), filter_indices(E), map(E), walk_mapping(E), member(E), m_contains(E)