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