Абстрактное значение вместо аргумента основного конструктора

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

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 несколько раз. Каковы преимущества перед простым полем?

8
задан giampaolo 17 August 2014 в 06:07
поделиться