struct - 在 Julia 中实现相互嵌套结构的问题

标签 struct types nested julia

我正在尝试定义两个结构,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/

相关文章:

attributes - Thymeleaf:将任意值设置为任意属性

javascript - jquery - 将引用 dom 元素的变量与选择器混合

arrays - 为什么我不能在 Swift 中使用数组的 append()?

c - scanf 字符串困惑

python - 在Python结构中填充字节

python - 在python中获取参数类型

C、gets() 可能很危险。文件中的数据不会出现

delphi - 类型差异

typescript - 如何省略嵌套数组类型的属性

django - DRF - 序列化多个模型