SYNOPSIS mixed *sort_array(mixed *arr, string wrong_order) mixed *sort_array(mixed *arr, string wrong_order, object|string ob) mixed *sort_array(mixed *arr, string wrong_order, object|string ob , mixed extra...) mixed *sort_array(mixed *arr, closure cl) mixed *sort_array(mixed *arr, closure cl, mixed extra...) BESCHREIBUNG Erzeugt eine flache Kopie des Arrays <arr> und sortiert die Kopie entweder nach der Ordnungsfunktion <ob->wrong_order(a, b)> oder nach der Closure cl. Das sortierte Array wird als Ergebnis zurueck geliefert. Wenn das Argument <arr> 0 ist, ist das Resultat der Funktion auch 0. <ob> ist das Objekt, in dem die Ordnungsfunktion <wrong_order()> aufgerufen wird. <ob> kann das Objekt als solches enthalten, oder einen String mit dem Objektnamen. Wird <ob> nicht angegeben, oder enthaelt es weder einen String noch ein Objekt, wird stattdessen this_object() verwendet. Die Elemente von <arr> werden paarweise an die Ordnungsfunktion <wrong_order()> als Argumente uebergeben, gefolgt von den <extra> Argumenten, falls vorhanden. Die Ordnungsfunktion <wrong_order> sollte eine positve Zahl liefern, wenn die paarweisen Elemente in der falschen Reihenfolge waren, 0 oder eine negative Zahl sonst. BEISPIELE Um folgendes Array in aufsteigender Reihenfolge zu ordnen: arr = ({ 3, 8, 1, 3 }) wird als Ordnungsfunktion is_greater() verwendet: int is_greater (int a, int b) { return a > b; } Folgende Aufrufe von sort_array() sind alle aequivalent: sort_array(arr, "is_greater", this_object()) sort_array(arr, "is_greater") sort_array(arr, #'is_greater) sort_array(arr, #'>) (this is the preferred variant :-) sort_array(arr, lambda(({'a, 'b}), ({#'>, 'a, 'b}))) Etwas komplizierter ist es, folgendes Array aufsteigend nach dem zweiten Argument jedes Teilarrays zu ordnen: arr = ({ ({ "foo", 3 }), ({ "quux", 1 }), ... }) Dafuer muss die Ordnungsfunktion folgende Form annehmen: int is_greater (mixed *a, mixed *b) { return a[1] > b[1]; } AENDERUNGEN LDMud 3.2.8 fuehrte die Moeglichkeit ein, zusaetzliche Argumente <extra> zu uebergeben. SIEHE AUCH transpose_array(E), filter(E), map(E), alists(LPC)