$fun.comparator()
Constructs a comparison function for sort() from an access function which calculates a comparison key from a list element. Sorting a list with such a comparator establishes an order of the values supplied by the access function.
| Name | Type | Description | Mandatory | Default |
|---|---|---|---|---|
| fun | Function | An access function that computes comparison keys from the given list elements, which can be used for comparison. | yes |
type: Function
A comparison function that can be used for sorting sets and lists.
all(`my.module:MyType`)
.sort(comparator(x -> $x.get(`my.module:MyType#name`)))
Output: List of all instances of the type my.module:MyType sorted by the values of the attribute name.
Here, the comparator() function makes a comparator function out of the access function x -> $x.get(`my.module:MyType#name`, which returns the value of the property name for a lis element.
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));
})
output: List of all instances of the type my.module:MyType sorted by the values of the attribute name.
In the above example, the comparator function is specified directly. Here, the name property must be accessed twice and the (-1, 1, 0) logic of a comparison function is explicitly spelled out. This could also be simplified by using the Comparative value function.