Zwei einfache Klassen, die Int
als Argument verwenden:
Ich kann sagen:
%Vor%Was gut funktioniert und etwas ausführlicher ist:
%Vor% Wie auch immer Bar
(weil es keine Fallklasse ist?) kann nicht im selben Konstrukt verwendet werden:
Gibt es eine spezielle Syntax, um auf einen Konstruktor zu verweisen und die Eta-Erweiterung zu nutzen? List(1,2,3) map {new Bar(_)}
scheint etwas verbaler als Foo
.
Im ersten Fall funktioniert es, weil das Companion-Objekt einer Fallklasse das entsprechende Merkmal FunctionN
erweitert. ( object Foo extends (Int => Foo)
in Ihrem Beispiel.) Für nicht-fallbezogene Klassen können Sie dies manuell tun:
IMO, es ist besser, mit new Bar(_)
zu gehen, da dieses zusätzliche Boilerplate die kleine Prägnanz nicht wert ist.
Tags und Links scala constructor higher-order-functions