【发布时间】:2016-05-16 02:32:33
【问题描述】:
文档说
在 Julia 中,函数的所有参数都通过引用传递。
所以我很惊讶地发现这两个函数的行为有所不同:
function foo!(r::Array{Int64})
r=r+1
end
function foobar!(r::Array{Int64})
for i=1:length(r)
r[i]=r[i]+1
end
end
这是出乎意料的不同输出:
julia> myarray
2-element Array{Int64,1}:
0
0
julia> foo!(myarray);
julia> myarray
2-element Array{Int64,1}:
0
0
julia> foobar!(myarray);
julia> myarray
2-element Array{Int64,1}:
1
1
如果数组是通过引用传递的,我会期待 foo!将零更改为一。
【问题讨论】:
标签: reference pass-by-reference julia