Syntax

	$setOfSets.flatten()

Beschreibung

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.

Parameter

Name Typ Beschreibung Pflicht Default
setOfSets Menge Eine zweidimensionale Menge (Menge mit Mengen als Elemente). ja

Rückgabewert

Typ: Menge

Eine Menge, die alle Einzelelemente der ursprünglichen Mengenelemente beinhaltet.

Beispiele

Einfache zweidiemnsionale Menge

	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.

Mengenwertige Referenzattribute

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()