本地范围和DataArrays.DataArray

时间:2016-11-01 17:54:13

标签: julia

我与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

请您澄清为何会出现这种情况,我怎样才能让朱莉娅行为正常?

1 个答案:

答案 0 :(得分:4)

在第二个示例中,您将索引到一个变量,因此它将在全局范围内搜索它并在其存在时进行变异。即x [1,1]等于某事,则x必须已经存在。

在第一个示例中,您已按预期在本地范围中创建了一个新变量。

这有意义吗?仅供参考,这与DataFrames类型无关,同样适用于普通数组。