gpt4 book ai didi

reflection - 如何获取字段的值

转载 作者:行者123 更新时间:2023-12-05 00:18:16 26 4
gpt4 key购买 nike

在 Julia 我可以得到一个像这样的字段列表

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

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

OUTPUT:
2-element Array{Symbol,1}:
:foo
:bar

但是,鉴于我动态查找的名称,如何访问这些字段的值?
我知道一种方法是自己构建表达式:
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

最佳答案

getfield(baz, :foo)将得到字段 foo来自变量 baz即结果将与 baz.foo 相同.

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

关于reflection - 如何获取字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38266389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com