gpt4 book ai didi

scala - 在 Scala 中为 DSL 的类型层次结构建模

转载 作者:行者123 更新时间:2023-12-04 04:34:25 25 4
gpt4 key购买 nike

我正在尝试在 Scala 中对 DSL 进行建模。 (我对 Scala 很陌生,所以我可能会遗漏一些微不足道的东西,在这种情况下道歉)。
DSL 支持一个非常简单的类型系统,其中名为“Terms”的实体可以有一个类型,它可以扩展 Object默认情况下,或者可以扩展其他类型,它们本身最终会扩展另一个类型或 Object .

我正在尝试使用 case 类在 Scala 中对这种类型层次结构进行建模:

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

但是,我希望能够支持“默认”情况(类型仅扩展“对象”的情况),而无需指定父类(super class)型,因此类似:
//the following does not work, just illustrating what I want to achieve
case class TermType(name: String, superType: TermType = new TermType("Object", ???))

不确定这是否是正确的方法。我希望避免放置空值或类似的东西。不知道要不要去 Option方式在某种程度上更好(如果它有效的话)。

最好的方法是什么?

最佳答案

例如:

sealed abstract class TermType
case class TermTypeSimple(name: String) extends TermType
case class TermTypeWithParen(name: String, parent: TermType) extends TermType

其他方式:
case class TermType(name: String, superType: Option[TermType] = None)

用法:
TermType("Hi")
TermType("Buy", Some(TermType("Beer"))

关于scala - 在 Scala 中为 DSL 的类型层次结构建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19999968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com