给定简单的类层次结构
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 规范,让编译器从基类中为我生成一个?
最佳答案
您可以将 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
关于scala - 在 Scala 中为父类(super class)生成构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533206/