julia - 保持 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
避免这些长链?
解决方案
您的问题的答案是您的设计似乎是面向对象的,因此设计了面向对象的语言来表达这种类型的设计。但您的设计可能还有其他解决方案。无论如何,定义
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 问题的先决条件) - 仅提及“您的其他问题”实际上并没有帮助。
推荐阅读
- javascript - 如何为每 10 个元素增加计数器
- python - 有没有办法根据修改日期查询 FTP 服务器以获取特定文件?
- jquery - 在jquery中选择标题下方的文本
- php - PHP PostGres 插入两个引号
- python - 如何在使用 python 进行正则表达式匹配后捕获 5 行
- trigonometry - CesiumJS计算折线和圆区域之间的相交
- laravel - 从数据库添加规则和验证值
- asp.net-core - NopCommerce 4.3 错误页面将您重定向太多次
- javascript - 自动选择选项
- appium - Appium:无法使用 appium 自动化 Google Home 应用