有没有办法在Julia中获取指向变量的集合?

问题描述:

假设我有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'会比数组慢很多倍。 –

你可以让他们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[]。所以只要确保你不会忘记[]

您也可以只使用一个可变对象并对它进行变异而不是对它进行赋值。例如

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