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