Абстрактный val вместо аргумента первичного конструктора - PullRequest
8 голосов
/ 31 июля 2011

Рассмотрим эти два класса и способ создания экземпляров:

class Person1(val name: String)

val p1 = new Person1("John");

и:

abstract class Person2 {
  val name: String
}

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

Почему предпочтительнее последняя (Person2) версия?Каждое такое объявление вызывает создание нового подкласса, также код немного более подробный и менее читаемый, однако вторая идиома используется в книге Программирование в Scala несколько раз.Каковы преимущества перед простой областью?

1 Ответ

9 голосов
/ 31 июля 2011

Один простой пример использования - с чертами, которые не могут иметь аргументов конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...