Syntax

	$fun.comparator()

Beschreibung

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.

Parameter

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

Rückgabewert

Typ: Funktion

Eine Vergleichsfunktion, die für die Sortierung von Mengen und Listen verwendet werden kann.

Beispiele

Vergleichsfunktion aus einer Zugriffsfunktion

	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.

Äquivalent zum vorherigen Beispiel ohne comparator

	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.