3

给定简单的类层次结构

abstract sealed class Base(id: String)

case class Child1(id: String, value: Int) extends Base(id)

case class Child2(id: String, value: Long, file: File) extends Base(id)

我可以使用宏或类似的东西来避免将id传递给 Base(并指示编译器为我生成它)吗?使用单个参数通过它并不难,但是如果有多个参数,它就会变得不舒服。

或者,如果我可以省略子类中的id规范并让编译器从基类中为我生成那些?

4

1 回答 1

3

您可以将 Base 作为特征:

sealed trait Base {
  val id: String
}

case class Child1(id: String, value: Int) extends Base
case class Child2(id: String, value: Long, file: File) extends Base
于 2013-07-08T18:46:56.020 回答