julia - Julia 中的 getattr() 相当于什么

标签 julia

Julia 中 Python 的 getattr() 的等价物是什么?我尝试了以下元编程代码,但它仅适用于全局范围,而不适用于函数范围。

type A
  name
  value
end

a = A("Alex",1)
for field in fieldnames(a)
   println(eval(:(a.$field)))
end

这将打印出:

Alex
1

但是,如果上面的内容在函数作用域内,那么它将不起作用

function tmp()
  a = A("Alex",1)
  for field in fieldnames(a)
     println(eval(:(a.$field)))
  end
end

tmp()

错误是:

ERROR: LoadError: UndefVarError: a not defined

编辑: 感谢大家回答问题。以下是 Julia 文档的链接 getfieldsetfield! .

最佳答案

您想使用getfield .

julia> function tmp()
         a = A("Alex",1)
         for field in fieldnames(a)
            println(getfield(a, field))
         end
       end
tmp (generic function with 1 method)

julia> tmp()
Alex
1

关于julia - Julia 中的 getattr() 相当于什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35436545/

相关文章:

import - 从 jupyter notebook 调用 julia 函数(导入 Julia jupyter notebook)

Julia Studio 中的 Julia 版本

parallel-processing - 如何与 Julia CUDArt 同步?

julia - 如何在 Julia 中显示所有输出?

julia - 如果可用,如何在 Julia REPL 中启动时导入包

Julia 预定义函数

r - 如何在 R 中运行 jl 文件 (julia)

julia - Julia 中多维数组的子维数组

datetime - 如何初始化日期向量?

electron - Blink.jl load(loadjs!/loadcss!/importhtml!)函数无法正常运行