Argumento da função Julia por referência
Os documentos dizem
Em Julia, todos os argumentos para funções são passados por referência.
então fiquei bastante surpreso ao ver uma diferença no comportamento dessas duas funções:
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
aqui está a saída inesperadamente diferente:
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
se a matriz for passada por referência, eu teria esperado foo! para mudar os zeros para uns.