2016-09-20 71 views
1

假設我有3個變量R1,R2和R3。我想要一個指向變量的Dictionary(或其他集合),這樣如果我修改該變量,它也會更改Dictionary中的值。有沒有辦法在Julia中獲取指向變量的集合?

基本上我想要做這樣的事情:

R1 = 0.0 
R2 = 0.0 
R3 = 0.0 

D = Dict(1=>R1, 2=>R2, 3=>R3) 

D[1] 
output> 0.0 

R1 = 1.0 

D[1] 
output> 1.0 

有沒有辦法在朱莉婭做到這一點?

感謝

+0

這聽起來像你只需要一個標準的朱莉婭陣列? –

+0

@ DavidP.Sanders是的......但我想嘗試不使用一個,因爲這裏解釋的原因http://stackoverflow.com/questions/36801197/summation-over-array-slower-than-summing-individual-variables -in-julia我不知道如果可以做我想做的事情,但值得一試 – Esteban

+2

Dict'會比數組慢很多倍。 –

回答

7

你可以讓他們Ref S:

R1 = Ref(0.0) 
R2 = Ref(0.0) 
R3 = Ref(0.0) 

D = Dict(1=>R1, 2=>R2, 3=>R3) 

D[1][] # output> 0.0 

R1[] = 1.0 

D[1][] # output> 1.0 

Ref s爲像指針。分配給它們的語法是ref[] = x,獲取它們的值的語法是ref[]。所以只要確保你不會忘記[]

4

您也可以只使用一個可變對象並對它進行變異而不是對它進行賦值。例如

R1 = [0.]; 
R2 = [0.]; 
R3 = [0.]; 
D = Dict(1=>R1, 2=>R2, 3=>R3); 
D[1] #> 0.0 
R1[1] = 1. # or just R1[] = 1. since empty brackets reference first element 
D[1] #> 1.0 
相關問題