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 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 sind. Die Funktion im Objekt bzw. die Closure wird einzeln mit jedem Element von als erstem Parameter und den 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 ins Ergebnisarray aufgenommmen. Wenn kein Array ist, erzeugt die Funktion einen Fehler. Die Argumente sind optional. duerfen keine geschuetzten Referenzen (wie &(i[0])) enthalten. Ist 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 ins Ergebnis aufgenommen, die ein Key von 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.