Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc/efun/sort_array

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
        Sortiert das Array  entweder nach der Ordnungsfunktion
        wrong_order(a, b)> oder nach der Closure cl.

        Normalerweise wird zuerst eine flache Kopie des Arrays  erstellt
        und die sortierte Kopie als Ergebnis zurueckgeliefert. Wird 
        jedoch als Referenz uebergeben, wird keine implizite Kopie erstellt
        und das Originalarray sortiert.

        Wenn das Argument  0 ist, ist das Resultat der Funktion auch 0.

         ist das Objekt, in dem die Ordnungsfunktion 
        aufgerufen wird.  kann das Objekt als solches enthalten, oder
        einen String mit dem Objektnamen. Wird  nicht angegeben, oder
        enthaelt es weder einen String noch ein Objekt, wird stattdessen
        this_object() verwendet.

        Die Elemente von  werden paarweise an die Ordnungsfunktion
         als Argumente uebergeben, gefolgt von den 
        Argumenten, falls vorhanden. Die Ordnungsfunktion  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 ist_groesser() verwendet:

            int ist_groesser(int a, int b) {
                return a > b;
            }

        Folgende Aufrufe von sort_array() sind alle aequivalent:

            arr = sort_array(arr, "ist_groesser", this_object())
            arr = sort_array(arr, "ist_groesser")
            arr = sort_array(arr, #'ist_groesser)
            arr = sort_array(arr, #'>)  //dies ist die bevorzugte Variante :-)
            arr = sort_array(arr, lambda(({'a, 'b}), ({#'>, 'a, 'b})))

        Soll direkt das Original  statt einer impliziten Kopie sortiert
        werden:

            sort_array(&arr, #'>)

        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 ist_groesser(mixed *a, mixed *b) {
                return a[1] > b[1];
            }

GESCHICHTE
        LDMud 3.2.8 fuehrte die Moeglichkeit ein, zusaetzliche Argumente
             zu uebergeben.
        LDMud 3.3.720 unterstuetzt die Uebergabe von  als Referenz und
            sortiert das Original statt einer impliziten flachen Kopie.

SIEHE AUCH
        transpose_array(E), filter(E), map(E), alists(LPC)


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.