Julia中的元素复合赋值算子
考虑以下两个功能Julia中的元素复合赋值算子,julia,Julia,考虑以下两个功能 function f(x) x = x .+ 1 end function g(x) x .+= 1 end 我的理解是,它们的行为应该相同,因为a.+=b只是a=a.+b的语法糖。但是,f不会变异作为参数传递给它的全局变量,而g会变异 有人能解释一下这里发生了什么事吗 谢谢。这几乎是对的:x.+=1是x.=x.+1的语法糖,它执行就地元素赋值,而x=x.+1将x重新绑定到通过元素加法生成的新数组。根据你所说的,我的猜测是,当你执行x=x.+1时创建一个新的
function f(x)
x = x .+ 1
end
function g(x)
x .+= 1
end
我的理解是,它们的行为应该相同,因为a.+=b
只是a=a.+b
的语法糖。但是,f
不会变异作为参数传递给它的全局变量,而g
会变异
有人能解释一下这里发生了什么事吗
谢谢。这几乎是对的:
x.+=1
是x.=x.+1
的语法糖,它执行就地元素赋值,而x=x.+1
将x
重新绑定到通过元素加法生成的新数组。根据你所说的,我的猜测是,当你执行x=x.+1
时创建一个新的x
对象与创建x.+=1
对象相比,它利用了现有的对象。有趣的是,因此x=x.+1
实际上不存在任何语法糖?不,没有较短的版本。