有没有办法在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
有没有办法在朱莉娅做到这一点?
感谢
答
你可以让他们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
这听起来像你只需要一个标准的朱莉娅阵列? –
@ DavidP.Sanders是的......但我想尝试不使用一个,因为这里解释的原因http://stackoverflow.com/questions/36801197/summation-over-array-slower-than-summing-individual-variables -in-julia我不知道如果可以做我想做的事情,但值得一试 – Esteban
Dict'会比数组慢很多倍。 –