8

考虑这两个类以及创建实例的方式:

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 编程》一书中多次使用。与直接领域相比有什么优势?

4

1 回答 1

9

一个简单的用例是带有特征的,它不能有构造函数参数。

于 2011-07-31T14:48:32.683 回答