Я использую Параметры.jl.
Предположим следующее MWE:
julia> @with_kw mutable struct test
a = 5.
b = .0
...... # Plenty of parameters in structure test
z = .5
end
test
Предположим теперь, что я хотел бы иметь функцию, которую я буду вызывать время от времени, которая разделяла бы все параметры теста, кроме z
. Я не знаю, как это сделать эффективно, например, внутри цикла for
.
Следующее работает, но довольно долго, если у меня много параметров!
julia> @with_kw mutable struct test
a = 5.
b = .0
z = .5
end
julia> t = test()
julia> @unpack a, b = t
julia> a, b = a/2, b/2
julia> @pack! t = a, b
Как я могу сделать это с большим количеством параметров, которые нужно разделить на два, а не только a
и b
?
Ты можешь сделать:
julia> setfield!.(Ref(t), 1:3, getfield.(Ref(t), 1:3) ./ 2)
3-element Vector{Float64}:
2.5
0.0
0.25
Примечания:
@with_kw mutable struct Test
a::Float64 = 5.
b::Float64 = .0
z::Float64 = .5
end
fieldcount(Test)