保持Julia结构中的数据结构可管理

时间:2019-01-19 07:45:33

标签: 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如何避免这些长链?

1 个答案:

答案 0 :(得分:1)

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

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

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