我与Julia有一个奇怪的问题,使用DataArrays.DataArray。
我将尝试使用官方文档中的示例(简化)来描述我的问题:
x = 1
function bar()
x = 10 # local
println(x) # 10
return 1
end
bar();
println(x) # 1
此函数更改x的本地值,但不会修改其全局值。
现在,让我们说我有以下内容:
using DataFrames;
x = @data([1 2 3 4 5 6 7 8 9 10]);
function bar()
x[1,1] = 1000000 # local
println(x[1, 1]) # 1000000
return 1
end
bar();
println(x[1, 1]) # it should be 1, but it is 1000000
请您澄清为何会出现这种情况,我怎样才能让朱莉娅行为正常?
答案 0 :(得分:4)
在第二个示例中,您将索引到一个变量,因此它将在全局范围内搜索它并在其存在时进行变异。即x [1,1]等于某事,则x必须已经存在。
在第一个示例中,您已按预期在本地范围中创建了一个新变量。
这有意义吗?仅供参考,这与DataFrames类型无关,同样适用于普通数组。