我得到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}
如果我在Expression
和Plus
之前声明Minus
,我会收到类似的错误。将代码包装在module
中也不会改变任何内容。
有没有办法在朱莉娅的声明之前引用一个类型?如果没有,对于这样的情况,推荐的解决方案是什么,其中两种类型相互依赖?只需删除类型注释?
在这种特殊情况下,我相信我可以使Expression
成为抽象类型,并使其他类型成为它的子类型。在这种情况下是推荐的吗?一般情况怎么样?