8 Stimmen

Abstrakter Wert anstelle des primären Konstruktorarguments

Betrachten Sie diese beiden Klassen und die Art und Weise, wie die Instanzen erstellt werden:

class Person1(val name: String)

val p1 = new Person1("John");

und:

abstract class Person2 {
  val name: String
}

val p2 = new Person2 {
  val name = "John"
}

Warum sollte man Letzteres bevorzugen ( Person2 ) Version? Jede solche Deklaration führt dazu, dass eine neue Unterklasse erstellt wird, außerdem ist der Code etwas ausführlicher und weniger lesbar, aber das zweite Idiom wird im gesamten Programmieren in Scala Buch mehrere Male. Was sind die Vorteile gegenüber dem reinen Feld?

9voto

Jean-Philippe Pellet Punkte 57683

Ein einfacher Anwendungsfall sind Traits, die keine Konstruktorargumente haben können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X