I have a struct (let’s say Model
) where I would like to logically divide the fields in two different objects (lets’s say optionsa
and optionsb
) but I want to keep this division transparent to the user so that it can just call the main structure using keyword arguments of the two wrapped structures. Of course, I could write a custom constructor with all the fields of the wrapped structs, but I wonder if there is a way to do it automatically.
For example:
Base.@kwdef mutable struct OptionsA
option1a::Int64 = 0
option2a::String = "foo"
end
Base.@kwdef mutable struct OptionsB
option1b::Int64 = 1
option2b::String = "boo"
end
mutable struct Model
optionsa::OptionsA
optionsb::OptionsB
otherstuff
end
# User should be able to do any of the following:
Model()
Model(option1a=1)
Model(option1a=1,option2b="zzz")
...