你能在Julia中找到相互引用的类型吗?

你能在Julia中找到相互引用的类型吗?,julia,Julia,我得到以下代码的ERROR:LoadError:UndefVarError:Expression not defined: struct IntLiteral value::Int end struct Plus left::Expression right::Expression end struct Minus left::Expression right::Expression end const Expression = Union{IntL

我得到以下代码的
ERROR:LoadError:UndefVarError:Expression not defined

struct IntLiteral
    value::Int
end

struct Plus
    left::Expression
    right::Expression
end

struct Minus
    left::Expression
    right::Expression
end

const Expression = Union{IntLiteral, Plus, Minus}
如果我在
加号
减号
之前声明
表达式
,我会得到类似的错误。将代码包装在
模块中
也不会改变任何东西

有没有一种方法可以在Julia中声明类型之前引用该类型?如果不是,对于这两种类型相互依赖的情况,建议的解决方案是什么?只是删除类型注释


在这个特殊的例子中,我相信我可以将
Expression
作为抽象类型,并将其他类型作为它的子类型。在这种情况下建议这样做吗?一般情况如何?

目前没有,没有。有关更多详细信息,请参阅。

也许
表达式
应该定义为抽象类型,请参阅文档中的“我相信我可以将表达式定义为抽象类型,并将其他表达式作为其子类型。在这种情况下建议这样做吗?”是的。“一般情况如何?”特征和类型参数。