【发布时间】:2020-09-04 11:33:57
【问题描述】:
Julia 新手,因此可能是一个基本问题。
x = 1
function someFn()
print(x)
x = 3
end
这会在 print(x) 处引发错误,因为在函数内部看不到全局 x inside。这是有道理的。
x = [1,2]
function someFn()
print(x)
x[1] = 4
end
print(x)
这里 print(x) 可以看到全局数组 x 和 x[1]=4 全局更改全局 x 的值。当我将 x 设为字典时,会观察到类似的行为。
三个问题
- 变量/数组的这种行为及其在函数内的作用域是否与 Julia 的工作方式一致?
- 当 x 是一个数组时,即使没有将引用作为输入传递给函数,它在函数内部也是可见的。这是正确的吗?
- 此外,更改数组中条目的值会全局反映。是不是因为 Julia 在任何地方都将数组 x 视为引用?
【问题讨论】:
-
是的,是的,而且差不多。请注意,用于数组的全局名称和用于函数的全局名称(如
print)之间没有区别。 docs.julialang.org/en/v1/manual/variables-and-scoping/… -
感谢马特的评论。突出显示的引用不会捕获变量和其他数据类型(如数组/字典/函数)之间的差异(正如您所提到的)。出于好奇,在 Julia 文档中是否有参考可以捕捉到我的问题的本质?我曾尝试寻找但未能找到一个。感谢您的帮助。
标签: arrays function dictionary scope julia