Ich möchte ein paar funky closure-ähnliche Sachen machen. Ich möchte, dass eine Methode ein anonymes Objekt zurückgibt, dessen Eingeweide auf die Parameter der Methode verweisen. Hier ist der Code, den ich geschrieben habe, der meine Absicht illustriert:
%Vor%Was ich VERSUCHEN möchte, ist ein Aufruf von "set", um ein Objekt zurückzugeben, das es mir erlaubt, einen Aufruf an ".to" zu ketten, so:
%Vor%Aber ich kann nicht sagen
%Vor%Gibt es einen Weg in Scala, um zu bekommen, wonach ich suche? Muss ich eine Klasse definieren und instanziieren?
Sie können einfach ein neues anonymes Objekt zurückgeben. Ihre Syntax war fast richtig: Ersetzen Sie einfach object
durch new
:
Dies ergibt jedoch einen Strukturtyp bei der Aufrufstelle, der Reflektion verwenden muss, um die Methoden zu verwenden. Um dies zu verhindern, definieren Sie ein Merkmal mit der API Ihres Objekts:
%Vor% Beachten Sie, dass ich ReturnTypeOfFrom
und ReturnTypeOfSet
verwendet habe, da ich keine Ahnung habe, was Ihre Methoden zurückgeben. Btw, das ist eine schlechte Angewohnheit: öffentliche Methoden sollten immer einen expliziten Ergebnistyp haben.