使用默认值创建复合类型



如何定义复合类型

mutable struct Foo
bar::Int64
end

这样,当我创建它的实例时,bar会得到一个默认值,比如42

我知道我可以用创建实例

Foo(42)

但我想做一些类似的事情

Foo()

您只需定义一个具有默认值的构造函数:

julia> struct Foo; bar::Int64; end
julia> Foo() = Foo(42)
Foo
julia> Foo()
Foo(42)

您可以使用Base@像这样的kwdef:

Base.@kwdef mutable struct Foo
bar::Int64 = 42
end   
julia> foo = Foo()
Foo(42)
julia> foo.bar
42
julia> foo = Foo(bar = 423)
Foo(423)
julia> foo.bar
423

如果你需要更多的功能,那么你可以查看一个名为Parameters.jl 的软件包

有关如何实现各种构造函数的信息,您可以查看文档:https://docs.julialang.org/en/v1/manual/constructors/

最新更新