gpt4 book ai didi

julia - 如何在 Julia 中实例化一个结构,其中结构名称位于字符串变量中?

转载 作者:行者123 更新时间:2023-12-02 09:07:39 24 4
gpt4 key购买 nike

要实例化的结构的名称将由调用者传递给我的程序。然后我需要实例化相应的结构以进行进一步处理。

例如,如果结构体是这样定义的

struct A end

我有一个函数定义为

function load(struct_name::AbstractString)
if struct_name == "A"
return A()
elseif struct_name == "B"
return B()
elseif ..... # and so on
end
end

它会起作用的。但是有没有像 return struct_name() 这样更直接的方法来代替 n 个 if else 语句呢?我发现 Julia 支持反射(reflection)。如何使用它来支持上述用例?

最佳答案

我建议不要在生产代码中执行此操作,但您可以执行以下操作:

function load(struct_name::AbstractString)
invoke(eval(Symbol(struct_name)),Tuple{})
end

strut_name 通过 eval 将在模块的全局范围内得到解析。

按照@EPo的建议使用字典更安全。

关于julia - 如何在 Julia 中实例化一个结构,其中结构名称位于字符串变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56196435/

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