Struct Julia中实现交互嵌套结构的问题

Struct Julia中实现交互嵌套结构的问题,struct,types,nested,julia,Struct,Types,Nested,Julia,我试图定义两个结构,节点和边。 节点包含一组边,而边包含目标节点和到达该节点的概率。由于问题的其余部分是如何构造的,我无法避免使用Edge对象 struct Node edges::Vector{Edge} end struct Edge next::Node probability::Float64 end 每当我尝试运行整个脚本时,我都会得到“UndefVarError:Edge未定义” 如果我尝试只运行边缘部分,我会得到“UndevarError:未定义节点” 有没有一

我试图定义两个结构,节点和边。 节点包含一组边,而边包含目标节点和到达该节点的概率。由于问题的其余部分是如何构造的,我无法避免使用Edge对象

struct Node
edges::Vector{Edge}
end

struct Edge
    next::Node
    probability::Float64
end
每当我尝试运行整个脚本时,我都会得到“UndefVarError:Edge未定义”

如果我尝试只运行边缘部分,我会得到“UndevarError:未定义节点”


有没有一种方法(如C)可以预先声明结构,或者告诉julia一起处理这两个结构?

使用抽象类型怎么样:

abstract type AbstractEdge end;

struct Node{T <: AbstractEdge}
    edges::Vector{T}
end

struct Edge <: AbstractEdge
    next::Node{Edge}
    probability::Float64
end

Node() = Node{Edge}(Edge[])
抽象类型AbstractEdge end;

结构节点{T据我所知,这是不可能的,请参阅

在这种情况下,您可以定义中间抽象类型,直到问题得到解决:

abstract type AbstractEdge end

struct Node{E<:AbstractEdge}
    edges::Vector{E}
end

struct Edge <: AbstractEdge
    next::Node{Edge}
    probability::Float64
end
抽象类型AbstractEdge end
结构节点{E:)我们有一个重复的建议。