首页 > 解决方案 > 保持 Julia 中的数据结构易于管理

问题描述

什么是 Julia 制作大型数据结构而又不会变得不守规矩的方法?

例如

struct Struct1
    item1::Vector{Struct2}
end

struct Struct2
    item2::Vector{Struct3}
end

struct Struct3
    item3::Vector{Struct4}
end

struct Struct4
    item4::Vector{Struct5}
end

struct Struct5
    item5::Float64
end

使用item5我需要将它全部初始化,并且可以说我称之为LongChain = Struct1()

因为没有继承需要item5使用

LongChain.item1[i].item2[j].item3[k].item4[l].item5

那条链可以任意长……如果有继承,那就是

LongChain.item5[i]

如何Julia避免这些长链?

标签: julia

解决方案


您的问题的答案是您的设计似乎是面向对象的,因此设计了面向对象的语言来表达这种类型的设计。但您的设计可能还有其他解决方案。无论如何,定义

getitem5(longchain::Struct1, i, j, k, l) = longchain.item1[i].item2[j].item3[k].item4[l].item5

应该解决问题。LongChain.item5[i]鉴于在这种情况下您缺少其他对象(j、k 和 l)的索引信息,我看不出如何在 Python 中将其简化为?人们询问您想要实现的目标(SO 问题的先决条件) - 仅提及“您的其他问题”实际上并没有帮助。


推荐阅读