相关疑难解决方法(0)

以编程方式将参数传递给 @kwdef 结构

以编程方式将参数传递给 @kwdef 结构

问题

我有这个结构:

Base.@kwdef struct example_struc
    Latitude::Float64  = 9.9        # Latitude (degree)
    Longitude::Float64 = -83.7      # Longitude (degree)
end
Run Code Online (Sandbox Code Playgroud)

example_struc()由于默认值,@kwdef 允许我在不提供所有参数的情况下实例化 an ,例如

julia> a= example_struc(Longitude= 40.0)
julia> a.Latitude
9.93833
julia> a.Longitude
40.0
Run Code Online (Sandbox Code Playgroud)

我想通过传递给example_struc参数的名称及其值以编程方式(从文件中读取的元组)实例化它。

我试过的

什么有效

我可以使用这样的元编程为一个论点做到这一点:

# Named tuple usually read from a file:
params= (Latitude = 43.61, Longitude = 3.877)
params_names= collect(keys(params))
Run Code Online (Sandbox Code Playgroud)
lat= :($(params[1]))
lat_name= :($(params_names[1]))
e= :(example_struc($(lat_name)= $(lat)))
a= eval(e)
Run Code Online (Sandbox Code Playgroud)

e看起来像这样:(example_struc(Latitude=43.61)),并且和a以前完全一样。

什么不起作用

Now in my …

julia

5
推荐指数
1
解决办法
803
查看次数

标签 统计

julia ×1