在Julia中迭代复合(用户定义)类型字段的最佳方法是什么?
比方说,我定义了以下类型并创建了一个实例:
type Foo
bar
baz::Int
qux::Float64
end
foo = Foo("Hello, world.", 23, 1.5)
Run Code Online (Sandbox Code Playgroud)
如何遍历所有字段,例如将字段及其值打印到REPL?我有一个包含多个字段的类型,我不想为每个字段明确命名.谢谢
fieldnames(foo)给你一个Vector{Symbol}名字,并foo.降低到getfield(foo,...).所以你只是:
for n in fieldnames(foo)
println(getfield(foo,n))
end
Run Code Online (Sandbox Code Playgroud)
这显然不利于性能,因为这里不会发生类型推断(你从字段获取的类型取决于值n).