Frage

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?

War es hilfreich?

Lösung

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top