struct - Julia 可变结构中的变量字段名
问题描述
我希望能够使用变量从 Julia 中的可变结构中获取字段。
例如
mutable struct myType
my_field1::Int = 1
my_field2::Int = 2
my_field3::Int = 3
end
然后让我们假设您使用声明此结构的特定实例struct_instance = myType()
如何以可变方式从这个可变结构的实例中提取字段的值?
假设您想使用 for 循环将 my_struct.field[X] 的值分配给一个变量,以便您当前访问的特定字段取决于变量 X:
foo = zeros(Int64, 3)
for X = 1:3
foo(X) = struct_instance.field[X]
end
我不知道如何实际实现上面的 for 循环——我上面写的只是上面的伪代码。例如,在 MATLAB 中,您将使用以下符号:
foo = zeros(1,3)
for x = 1:3
foo(x) = struct_instance.(sprintf('field%d',x))
end
提前致谢。
解决方案
从结构中获取字段的函数是fieldnames
:
julia> mutable struct A
x
y
z
end
julia> fieldnames(A)
(:x, :y, :z)
要以编程方式设置这些字段值*,您可以使用setproperty!
:
julia> a = A(1,1,1)
A(1,1,1)
julia> a.x
1
julia> setproperty!(a, :x, 2)
2
julia> a.x
2
使用 for 循环,
julia> for i in fieldnames(A)
setproperty!(a, i, 3)
end
julia> a
A(3,3,3)
推荐阅读
- android - 状态栏上的Android默认返回操作
- android - 无法构建 caffe2 AICamera 应用程序
- java - 当 xml 中存在相同节点作为空标记时,将节点添加到 xml
- c++ - 重构类:无法将派生类中成员函数的通用代码移回基类
- c# - 当执行策略设置为 RemoteSigned 时,为什么从 Internet (azure blob) 下载后执行脚本
- css - 如何减少引导程序中选择之间的填充
- javascript - 让超时工作
- java - Gradle build with Lombok
- wix - WIX 合并 C++ 运行时
- wordpress - 重新提交解析验证后,提交时的重力表不收集条目