考虑这两个类以及创建实例的方式:
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 编程》一书中多次使用。与直接领域相比有什么优势?