Reflection 如何获取字段的值

Reflection 如何获取字段的值,reflection,julia,Reflection,Julia,在julia中,我可以得到这样的字段列表 INPUT: type Foobar foo::Int bar::String end baz = Foobar(5,"GoodDay") fieldnames(baz) OUTPUT: 2-element Array{Symbol,1}: :foo :bar 但是,鉴于我正在动态查找的名称,如何访问这些字段的值呢 我知道一种方法是自己构建表达式: 这看起来有点吓人,所以我认为有更好的方法 用例:

在julia中,我可以得到这样的字段列表

INPUT:
type Foobar
    foo::Int
    bar::String
end

baz = Foobar(5,"GoodDay")
fieldnames(baz)

OUTPUT:
2-element Array{Symbol,1}:
 :foo
 :bar
    
但是,鉴于我正在动态查找的名称,如何访问这些字段的值呢

我知道一种方法是自己构建表达式: 这看起来有点吓人,所以我认为有更好的方法

用例:
getfield(baz,:foo)
将从变量
baz
获取字段
foo
,即结果将与
baz.foo
相同


注意
:foo
必须是一个符号,因此如果您以某种方式获取字符串中的字段名,则应按如下方式使用:
getfield(varname,symbol(fieldnamestring))

您也可以使用例如getfield(baz,2)来获取第二个字段,而无需知道其名称

@DanGetz听起来像是个答案。你做一个怎么样,这样我就可以投票接受了?
fieldvalue(v,fn::Symbol) = eval(Expr(:(.), v, QuoteNode(fn)))
INPUT:
function print_structure(v)
    for fn in fieldnames(v)
        println(fn,"\t", fieldvalue(v,fn))
    end   
end
print_structure(baz)

OUTPUT:
foo 5
bar GoodDay