$fun.comparator()
Konstruiert eine Vergleichsfunktion für sort() von einer Zugriffsfunktion, die einen Vergleichsschlüssel aus einem Listenelement berechnet. Das Sortieren einer Liste mit einem solchen Vergleicher stellt eine Reihenfolge der von der Zugriffsfunktion gelieferten Werte her.
| Name | Typ | Beschreibung | Pflicht | Default |
|---|---|---|---|---|
| fun | Funktion | Eine Zugriffsfunktion, die Vergleichsschlüssel aus den gegebenen Listenelementen Vergleichsschlüssel berechnet, die zum Vergleichen verwendet werden können. | ja |
Typ: Funktion
Eine Vergleichsfunktion, die für die Sortierung von Mengen und Listen verwendet werden kann.
all(`my.module:MyType`)
.sort(comparator(x -> $x.get(`my.module:MyType#name`)))
Ausgabe: Liste aller Instanzen des Typs my.module:MyType sortiert nach den Werten des Attributs name.
Die comparator()-Funktion macht hier aus der Zugriffsfunktion x -> $x.get(`my.module:MyType#name`, die für ein LIstenelement den Wert der Eigenschaft name liefert, eine Vergleichsfunktion.
all(`my.module:MyType`)
.sort(x -> y -> {
name1 = $x.get(`my.module:MyType#name`);
name2 = $y.get(`my.module:MyType#name`);
if ($name1 < $name2,
-1,
if ($name1 > $name2, 1, 0));
})
Ausgabe: Liste aller Instanzen des Typs my.module:MyType sortiert nach den Werten des Attributs name.
Im obigen Beispiel wird die Vergleichsfunktion direkt angegeben. Hier muss zweimal auf die name-Eigenschaft zugegriffen werden und die (-1, 1, 0)-Logik einer Vergleichsfunktion ist explizit ausformuliert. Dies könnte auch über die Verwendung der Vergleichswert-Funktion vereinfacht werden.