Detail
Detail
Ein typisches Pattern bei der Objekterzeugung ist:
obj = new(`MyType`); $obj.set(`MyType#myProp`, $myValue); $otherObj.set(`OtherType#myRef`, $obj);
Hier wird eine "temporäre" Variable benutzt, um ein Objekt zu erzeugen, zu initialisieren und schließlich einer Referenz zuzuweisen.
Da set() und andere Methoden nicht das Eingabeargument zurückliefern, ist die temporäre Variable notwendig, um die Initialisierung durchzufürhen, bevor das neue Object verwendet werden kann.
Mit "explicit method chaining" wird die temporäre Variable überflüssig:
$otherObj.set(`OtherType#myRef`, new(`MyType`) ..set(`MyType#myProp`, $myValue) );
Der Operator ".." ruft eine Funktion auf einem Eingangsobjekt (hier der neuen Instanz von "MyType" auf und liefert diesen Eingangswert auch wieder zurück, unabhängig davon, was die aufgerufene Funktion zurückliefert.
Mit dem ".." Operator lässt sich Objekterzeugung und Initialisierung immer als Expression statt als imperative Kette ausdrücken.
Test
- test.com.top_logic.model.search.expr.TestSearchExpression (umformuliert in der jetzt idiomatischen Syntax für Objektanlage).