Scala-Funktion, die ein anonymes Objekt zurückgibt?

9

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?

    
John Arrowwood 07.10.2014, 23:26
quelle

2 Antworten

9

Sie können einfach ein neues anonymes Objekt zurückgeben. Ihre Syntax war fast richtig: Ersetzen Sie einfach object durch new :

%Vor%

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.

    
sjrd 08.10.2014, 03:18
quelle
0

Ich bin mir nicht sicher, was Sie tun wollen, also wird Ihnen das hoffentlich einen Startpunkt geben.
Sie können kein anonymes Objekt haben, aber Sie können innere Objekte haben, so dass Sie Folgendes tun können:

%Vor%     
roterl 08.10.2014 00:33
quelle

Tags und Links