我正在使用Parameters.jl。
假設以下 MWE:
julia> @with_kw mutable struct test
a = 5.
b = .0
...... # Plenty of parameters in structure test
z = .5
end
test
現在假設我想要一個函式,我會不時呼叫它來劃分除 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?
uj5u.com熱心網友回復:
你可以做:
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/457129.html
上一篇:物件內部的變數不會公開更改
下一篇:C 中的二分查找實作
