Wie definieren Sie in Scala einen lokalen Parameter im primären Konstruktor einer Klasse?

Wie definiert man in Scala einen lokalen Parameter im primären Konstruktor einer Klasse, die kein Datenelement ist und die beispielsweise nur dazu dient, ein Datenelement in der Basisklasse zu initialisieren?

Wie kann ich beispielsweise im folgenden Code Parameter richtig definieren?b im primären Konstruktor der KlasseB damit es nur einen temporären lokalen Parameter und kein Datenelement erzeugt?

class A(var a: Int)
class B(?b?) extends A(b)

Randall, deine Antworten erklären, warum sich der Scala-Compiler beschwert, wenn ich eine Methode einführeinc das erhöht die EigenschaftaÄndern Sie jedoch auch den Namen des Parameters in der KlasseB Konstruktor, der mit dem Parameter in der Klasse übereinstimmtA Konstrukteur:

class A(var a: Int)
class B(a: Int) extends A(a) {
  def inc(value: Int) { this.a += value }
}

Ausgabe des Scala-Compilers:

$ scala construct.scala
construct.scala:3: error: reassignment to val
  def inc(value: Int) { this.a += value }
                               ^
one error found

Scala beschwert sich da klasseB muss jetzt eine private schreibgeschützte Eigenschaft habena aufgrund des Verweises aufa iminc. ÄndernB(a: Int) zuB(var a: Int) generiert einen anderen Compilerfehler:

construct.scala:2: error: error overriding variable a in class A of type Int;
 variable a needs `override' modifier
class B(var a: Int) extends A(a) {
            ^
one error found

Hinzufügenoverride hilft auch nicht:

construct.scala:2: error: error overriding variable a in class A of type Int;
 variable a cannot override a mutable variable
class B(override var a: Int) extends A(a) {
                 ^
one error found

Wie kann ich den gleichen Namen im Parameter im primären Konstruktor von verwenden?B als die im primären Konstruktor der Basisklasse definierte EigenschaftA?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage