【发布时间】:2021-06-30 11:14:55
【问题描述】:
在 Julia 1.6.1 [VScode 1.57.1 with Julia Extension 1.2.5] 中:
两个微不足道的函数,两个变量,一个是 g1(类型为 {Int64}),另一个是 g2(显然是 Vector{Int64} 类型)。完整的普鲁斯特规模的极其复杂的代码是:
function set_g1(_a)
_a = 0
end
function set_g2(_a)
_a[length(_a)] = _a[begin]
end
g1 = 279
g2 = [1, 2, 3, 4]
set_g1(g1)
set_g2(g2)
println(g1)
println(g2)
-- 输出:
279
[1, 2, 3, 1]
就是这样。 g1 仅传递给set_g1() “按值”,当然,不是“按引用”——正如帕斯卡人所说的那样 p>
但是g2 不是吗?但那究竟是什么?
从功能上讲,它很可能是一个“全局”变量(虽然没有这样声明,并且如果它是一个全局变量,那么函数中无论如何都需要“全局”声明。没关系)。
没关系本地/全球,set_g2 在任何情况下都通过引用作用于g2 - 有效。
'逻辑光学',可以这么说,这里患了近视?
但是,我是近视的,所以也许是我.. 然后一个人必须忍受自己的缺陷,'试图应对,而这种'通过参考'-行为确实派上用场(鉴于我必须应对-虽然有点不喜欢- - 加载全局变量)
但是我不知道如何将g1 传递给set_g1() '通过引用' [仍然喜欢那种过时的 Pascal 方法;但是传递 var 然后,一旦功能消化,返回它,从视觉上看起来不是很短视,它看起来有点笨拙]
【问题讨论】:
标签: julia global-variables pass-by-reference global