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

ベースをトレイトとして作成できます:

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 に答える