在Julia中:初始化字段时不使用任何内容
我有一个在Julia中:初始化字段时不使用任何内容,julia,Julia,我有一个可变结构,带有如下可选字段: mutable struct MyStruct field1::Union{Int, Nothing} field2::Union{String, Nothing} field3::Union{Int, Nothing} field4::Union{String, Nothing} # ... end 现在,我可以编写一个默认构造函数,它使用nothing初始化字段: MyStruct() = MyStruct(no
可变结构
,带有如下可选字段:
mutable struct MyStruct
field1::Union{Int, Nothing}
field2::Union{String, Nothing}
field3::Union{Int, Nothing}
field4::Union{String, Nothing}
# ...
end
现在,我可以编写一个默认构造函数,它使用nothing
初始化字段:
MyStruct() = MyStruct(nothing, nothing, nothing, nothing)
当我的结构有很多字段时,这就不太好了。此外,我必须计算字段数,以获得构造函数调用,在这种情况下,所有的“nothings”都是正确的。有更好的方法吗
根据字段内容,我希望稍后调用不同的函数:
if mystruct.field1 == nothing
do_this()
else
do_that()
end
您可以使用函数来实现这一点。此函数提供给定类型的实例将具有的字段数。下面是一个包含可变结构和外部构造函数的示例
julia> mutable struct Foo
x
y
z
end
julia> Foo() = Foo(ntuple(x->nothing, fieldcount(Foo))...); # you can also fill an array and use `...`
julia> Foo()
Foo(nothing, nothing, nothing)
我对这个用例很感兴趣,但我还想指出最后一个例子更适合使用参数化函数,即f(::Nothing)=…#某物;f()=#其他事项