在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()=#其他事项