Создать составной тип со значениями по умолчанию - PullRequest
4 голосов
/ 11 апреля 2020

Как определить составной тип

mutable struct Foo
    bar::Int64
end

так, чтобы при создании его экземпляра bar получал значение по умолчанию, скажем, 42?

I знаю, что я могу создать экземпляр с

Foo(42)

, но я хотел бы сделать что-то вроде

Foo()

Ответы [ 3 ]

6 голосов
/ 11 апреля 2020

Вы можете просто определить конструктор со значением по умолчанию:

julia> struct Foo; bar::Int64; end

julia> Foo() = Foo(42)
Foo

julia> Foo()
Foo(42)
4 голосов
/ 12 апреля 2020

Вы можете использовать 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

А если вам нужна дополнительная функциональность, вы можете проверить пакет с именем Параметры .jl

0 голосов
/ 11 апреля 2020

Информацию о том, как реализовать различные конструкторы, вы можете найти в документации: https://docs.julialang.org/en/v1/manual/constructors/

...