Question

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?

Était-ce utile?

La solution

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top