Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 本地作用域和DataArray.DataArray_Julia - Fatal编程技术网

Julia 本地作用域和DataArray.DataArray

Julia 本地作用域和DataArray.DataArray,julia,Julia,我与Julia在使用DataArray.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]

我与Julia在使用DataArray.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

你能解释一下为什么会这样,我怎样才能让茱莉亚表现正常

在第二个示例中,您将索引到一个变量中,因此它将在全局范围内搜索该变量,并在该变量存在时对其进行变异。i、 如果x[1,1]等于某个值,那么x必须已经存在

在第一个示例中,您已经按照预期在局部范围中创建了一个新变量


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

在第二个示例中,您将索引到一个变量中,因此它将在全局范围内搜索该变量,并在该变量存在时对其进行变异。i、 如果x[1,1]等于某个值,那么x必须已经存在

在第一个示例中,您已经按照预期在局部范围中创建了一个新变量


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

好的,我知道了。我仍然在怀疑,因为我有同样的问题,即使我让酒吧接受x作为一个论点。在这种情况下,功能栏应该有一个本地版本的x,不是吗?为什么它仍然访问全局x?不,函数可以改变它们的参数。如果要显式创建本地版本,请先添加本地版本,即本地x=whatever@AlexanderMorleylocal x=任何不复制的东西,这听起来像@merch想要做的。当然,我不确定@merch是想复制还是只是想确保全局变量没有因为使用x作为变量名而发生变异。也许我应该说,如果你想明确地将x赋给局部范围内的变量。有没有办法制作同名的本地副本?好的,我知道了。我仍然在怀疑,因为我有同样的问题,即使我让酒吧接受x作为一个论点。在这种情况下,功能栏应该有一个本地版本的x,不是吗?为什么它仍然访问全局x?不,函数可以改变它们的参数。如果要显式创建本地版本,请先添加本地版本,即本地x=whatever@AlexanderMorleylocal x=任何不复制的东西,这听起来像@merch想要做的。当然,我不确定@merch是想复制还是只是想确保全局变量没有因为使用x作为变量名而发生变异。也许我应该说,如果你想明确地将x赋给局部范围内的变量。有没有办法制作同名的本地副本?