Die bisherigen Suchergebnisse haben mich dazu gebracht zu glauben, dass dies ohne einen nicht-primären Konstruktor nicht möglich ist
%Vor%oder Opfern des Namens des Parameters im primären Konstruktor (Aufrufe mit benannten Parametern hässlich machen)
%Vor%Im Idealfall könnte man so etwas tun:
%Vor%Ich weiß, dass benannte Parameter eine neue Sache in der Java-Welt sind, also ist es wahrscheinlich für die meisten nicht so wichtig, aber aus einer Sprache kommend, in der benannte Parameter populärer sind (Python), taucht dieses Problem sofort auf.
Meine Frage ist also: Ist das möglich? (wahrscheinlich nicht), und wenn nicht, warum wird ein solcher (meiner Meinung nach) wichtiger Anwendungsfall durch das Sprachdesign freigelegt? Damit meine ich, dass der Code entweder eine saubere Benennung oder prägnante Definitionen opfern muss, was ein Kennzeichen von Scala ist.
PS Betrachte den Fall, dass ein öffentliches Feld plötzlich privat gemacht werden muss, während der Getter öffentlich bleibt. In diesem Fall muss der Entwickler eine Zeile ändern und drei Zeilen hinzufügen, um den Effekt zu erzielen die Schnittstelle identisch halten:
%Vor%- & gt;
%Vor%Ob das tatsächlich ein Designfehler ist, ist eher umstritten. Man würde meinen, dass es sich nicht lohnt, die Syntax zu komplizieren, um diesen speziellen Anwendungsfall zu ermöglichen.
Scala ist auch eine vorwiegend funktionale Sprache, daher sollte die Präsenz von vars in Ihrem Programm nicht so häufig sein, was wiederum die Frage aufwirft, ob dieser spezielle Anwendungsfall auf besondere Weise gehandhabt werden muss.
Es scheint jedoch, dass eine einfache Lösung für Ihr Problem wäre, eine apply
Methode im Begleitobjekt zu verwenden:
Verwendung:
%Vor%SPÄTER BEARBEITEN :
Hier ist eine Lösung ähnlich wie ursprünglich gewünscht, aber die Benennung ändert sich etwas:
%Vor%Verwendung:
%Vor%Das Konzept, das Sie auszudrücken versuchen, das ein Objekt ist, dessen Zustand aus dem Objekt heraus veränderlich und dennoch unveränderbar ist aus der Perspektive anderer Objekte ... das würde sich wahrscheinlich als Akka-Akteur im Kontext eines Schauspielers ausdrücken System. Außerhalb des Kontextes eines Akteursystems scheint es eine Java-Vorstellung dessen zu sein, was es bedeutet, ein Objekt zu sein, das in Scala verpflanzt ist.
%Vor%Tags und Links scala