如何定义复合类型
mutable struct Foo
bar::Int64
end
Run Code Online (Sandbox Code Playgroud)
这样当我创建它的一个实例时,bar会得到一个默认值,比如说42?
我知道我可以创建实例
Foo(42)
Run Code Online (Sandbox Code Playgroud)
但我想做类似的事情
Foo()
Run Code Online (Sandbox Code Playgroud)
你可以定义一个带有默认值的构造函数:
julia> struct Foo; bar::Int64; end
julia> Foo() = Foo(42)
Foo
julia> Foo()
Foo(42)
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以像这样使用Base.@kwdef:
Base.@kwdef mutable struct Foo
bar::Int64 = 42
end
Run Code Online (Sandbox Code Playgroud)
julia> foo = Foo()
Foo(42)
julia> foo.bar
42
julia> foo = Foo(bar = 423)
Foo(423)
julia> foo.bar
423
Run Code Online (Sandbox Code Playgroud)
如果您需要更多功能,那么您可以查看一个名为Parameters.jl的包