如何定义复合类型
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/