Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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中的元素复合赋值算子_Julia - Fatal编程技术网

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
实际上不存在任何语法糖?不,没有较短的版本。