$setOfSets.flatten()
Berechnet eine Menge, die alle Elemente aus allen Element-Mengen in der Menge setOfSets enthält.
Zweidimensionalle Mengen (also Mengen, die als Elemente wieder Mengen beinhalten), werden nicht als Endergebnis unterstützt. Daher müssen alle Elemente in den inneren Mengen ausgepackt und stattdessen als Elemente der äußeren Menge abgespeichert werden. Man benötigt flatten() daher zum Beispiel wenn $set.map($func) (siehe Abbildung) aufgerufen wird und func selbst eine Menge zurückgibt.
| Name | Typ | Beschreibung | Pflicht | Default |
|---|---|---|---|---|
| setOfSets | Menge | Eine zweidimensionale Menge (Menge mit Mengen als Elemente). | ja |
Typ: Menge
Eine Menge, die alle Einzelelemente der ursprünglichen Mengenelemente beinhaltet.
list(1, 4, 9)
.map(x -> concat($x, 2, 3))
.flatten()
Ausgabe: Eine Mengemit den Elementen [1, 2, 3, 4, 2, 3, 9, 2, 3].
Die Elemente der drei Ergebnismengen [1, 2, 3], [4, 2, 3] und [9, 2, 3] werden ausgepackt und als Elemente einer einzigen Menge eingefügt.
Wenn man annimmt, dass der Typ my.module:MyTyp ein mengenwertiges Referenzattribut others besitzt, dann würde der Ausdruck
all(`my.module:MyType`)
.map(x -> $x.get(`my.module:MyType#others`)
eine Menge von Mengen mit allen in others referenzierten Objekten liefern, was als Endergebnis z.B. einer Suche nicht unterstützt ist. Daher muss die Ergebnismenge geglättet werden:
all(`my.module:MyType`)
.map(x -> $x.get(`my.module:MyType#others`)
.flatten()