VERALTET SYNOPSIS mixed *filter_array(mixed *arr, string fun, string|object ob, mixed extra, ...); mixed *filter_array(mixed *arr, closure cl, mixed extra, ... ); mixed *filter_array(mixed *arr, mapping map, mixed extra, ... ); BESCHREIBUNG Liefert ein Array, das alle Elemente von <arr> enthaelt, fuer die ob->fun(Element, extra, ...) bzw. die Closure cl TRUE (d.h. einen Wert != 0) ergeben hat, oder die ein Key des Mappings <map> sind. Die Funktion <fun> im Objekt <ob> bzw. die Closure <cl> wird einzeln mit jedem Element von <arr> als erstem Parameter und den <extra> Argumenten als folgende Parameter aufgerufen. Wenn ob->fun[arr[index], extra) einen Wert != 0 liefert, bzw. wenn map[arr[index]] existiert, wird das Element von <arr> ins Ergebnisarray aufgenommmen. Wenn <arr> kein Array ist, erzeugt die Funktion einen Fehler. Die <extra> Argumente sind optional. <extra> duerfen keine geschuetzten Referenzen (wie &(i[0])) enthalten. Ist <ob> nicht angegeben oder weder ein String noch ein Objekt, wird stattdessen this_object() verwendet. Seit 3.2.1@36 kann das zweite Argument auch ein Mapping sein. Es werden nur jene Elemente von <arr> ins Ergebnis aufgenommen, die ein Key von <map> sind (d.h. map[arr[index]] != 0). BEISPIEL int check_if_idle(object user) { return query_idle(user); } ... object *idle_users; idle_users = filter_array(users(), "check_if_idle"); /* gleichwertig, aber kuerzer und schneller */ idle_users = filter_array(users(), #'query_idle ); Das Array *idle_users enthaelt jetzt alle User, die fuer mehr als 1 Sekunde idle waren. AENDERUNGEN Seit LDMud 3.2.6 abgeloest von filter(). Seit LDMud 3.2.9 ist die Funktion nur noch verfuegbar, wenn der Treiber mit USE_DEPRECATED kompiliert wurde.