質問

Given simple class hierarchy

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)

can I use macros or something like that to avoid passing id to Base (and instruct compiler to generate this for me)? With single argument it's not that hard to pass it, but in case of several arguments it becomes uncomfortable.

Or if I could omit specification of id in child classes and make compiler generating ones for me from base class?

役に立ちましたか?

解決

You can make Base as a trait:

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top