Ich habe diese ziemlich einfache Frage über Scala. Vorausgesetzt, ich muss der Klassendefinition folgen:
%Vor% Der Code, der eine Instanz von Foo
erstellen kann, muss den Anfangswert für bar
übergeben können. Aber wenn ich bar
als var
definiere, kann der Benutzer auch seinen Wert zur Laufzeit ändern, was ich nicht will. Der Benutzer sollte nur bar
lesen können. bar
selbst wird intern modifiziert, so dass val
keine Option ist.
Schreibgeschützt für eine Eigenschaft ist einfach, erstellen Sie einfach eine Getter-Methode ohne den entsprechenden Setter. Es ist auch einfach, ein eigenes modifizierbares Feld zu erstellen.
Ihre größte Herausforderung ist der gemeinsame Namespace. Sie können denselben Namen für Folgendes verwenden:
Leider ist das nicht möglich, und Sie brauchen einen eindeutigen Namen für jede Rolle ... etwa so:
%Vor%Wenn Sie sich nicht darum kümmern, benannte Argumente oder den Namen des Arguments in Scaladoc zu verwenden, kann dies noch weiter verkürzt werden:
%Vor%AKTUALISIEREN
Die sauberste Methode, die Ihnen benannte Parameter zurückgibt, ist die Kombination einer Fabrik mit einer der oben genannten Techniken:
%Vor% Dies kann dann als Bippy(42)
aufgerufen werden. Genau wie der normale Konstruktor, aber ohne das new
Schlüsselwort.
Tags und Links scala