我正在尝试定义两个结构,Node 和 Edge。 节点包含边数组,而边包含目标节点和到达该节点的概率。由于问题其余部分的结构,我无法避免使用 Edge 对象。
struct Node
edges::Vector{Edge}
end
struct Edge
next::Node
probability::Float64
end
每当我尝试运行整个脚本时,我都会收到“UndefVarError:Edge is not defined”。
如果我尝试只运行边缘部分,我会得到“UndefVarError:Node is not defined”。
有没有办法(像在 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[])
如果您进行任何图形计算,请考虑使用 LightGraphs.jl,它具有可能适合您需求的加权图形。
关于struct - 在 Julia 中实现相互嵌套结构的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54656359/