请考虑以下两个功能,
function f(x)
x = x .+ 1
end
function g(x)
x .+= 1
end
我的理解是,由于a .+= b
只是a = a .+ b
的语法糖,因此它们应该表现相同。但是,f
不会使作为参数传递给它的全局变量发生突变,而g
会对此产生突变。
有人可以告诉我这里发生了什么吗?
谢谢。
答案 0 :(得分:2)
这几乎是 右边:x .+= 1
是x .= x .+ 1
的语法糖,它进行就地元素分配,而x = x .+ 1
重新绑定x
到通过按元素加法生成的新数组。