2

Scala で DSL をモデル化しようとしています。(私は Scala に非常に慣れていないので、些細なことを見落としている可能性があります。その場合は申し訳ありません)。DSL は非常に単純な型システムをサポートしており、'Terms' と呼ばれるエンティティは型を持つことができます。この型はObjectデフォルトで拡張されるか、他の型を拡張することができ、それ自体が最終的に別の型または を拡張しObjectます。

ケースクラスを使用して、Scala でこの型階層をモデル化しようとしています。

case class TermType(name: String, superType: TermType)

ただし、スーパータイプを指定することなく、「デフォルト」のケース (型が「オブジェクト」を拡張するだけのケース) をサポートできるようにしたいので、次のようなものです。

//the following does not work, just illustrating what I want to achieve
case class TermType(name: String, superType: TermType = new TermType("Object", ???))

それが正しいアプローチかどうかはわかりません。null やそのようなものを配置することは避けたいと思います。Option道を行くことが何らかの方法でより良いかどうかはわかりません(それがまったく機能する場合)。

どうやって行くのが一番いいですか?

4

1 に答える 1