spa*_*per 2 parameters struct dictionary julia
我有一个具有默认值的不可变结构(感谢 Parameters.jl),我想从我拥有的字典(最初这些来自 JSON 文件)创建这个结构的实例。然而,虽然我知道这些字典中可能的键集,但并非每个字典都有相同的键。我正在努力弄清楚如何通过算法将这些 dict 转换为我的不可变结构的实例。我怎样才能做到这一点?
例如,我有:
@with_kw struct Mystruct
id::String
mass::Float64
names::Vector{String}=Vector{String}()
elements::Vector{String}=Vector{String}()
end
Run Code Online (Sandbox Code Playgroud)
和许多字典,每个字典都可以有不同的键。他们都会有idand mass(这就是为什么没有默认值的原因),但每个 dict 可能有也可能没有names, and elements。
似乎如果我使用的是可变结构,这会很容易,因为我可以只初始化实例,然后setfield!在事后使用——但在可变结构“初始化”之前似乎没有办法做到这一点”。
对于这个没有参数的简单结构,您可以像这样构造一个新结构:
julia> kwargs = Dict(:id=>"test", :mass=> 1.)
Dict{Symbol,Any} with 2 entries:
:id => "test"
:mass => 1.0
julia> Mystruct(;kwargs...)
Mystruct
id: String "test"
mass: Float64 1.0
names: Array{String}((0,))
elements: Array{String}((0,))
Run Code Online (Sandbox Code Playgroud)