Wichtig
Kleinigkeit
Fehlerbehebung
Wichtig
Verbesserung
Detail
#23108
Suchausdrücke: Implizite Flat-Map-Semantik von .get(...) auf Collections
Wenn man mehrstufig navigieren will, dann geht das mit Suchausdrücken folgendermaßen:
x -> $x.get(`myModule:MyType#ref1`).get(`myModule:MyType#ref2`)
Die Voraussetzung ist, dass das erste Attribut ref1 nicht "multiple" ist, d.h. keine Collection sonderen nur einen Einzelwert liefert. Wenn ref1 als "multiple" deklariert ist, muss man relative umständlich schreiben:
x -> $x.get(`myModule:MyType#ref1`).foreach(y -> $y.get(`myModule:MyType#ref2`))
Wenn ref2 auch noch "multiple" ist, muss man sogar folgendes schreiben, um nicht eine Collection von Collections zu bekommen, mit der das Framework gar nicht umgehen kann:
x -> $x.get(`myModule:MyType#ref1`).foreach(y -> $y.get(`myModule:MyType#ref2`)).flatten()
Mit der automatischen Flat-Map-Semantik von get(...) kann man jetzt in allen Fällen einfach die erste Variante benutzen und bekommt das erwartete Ergebnis.
Test
- Attribut derivedPath in tl-demo.