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)