Argumento de la función de Julia por referencia
Los documentos dicen
En Julia, todos los argumentos de las funciones se pasan por referencia.
así que me sorprendió ver una diferencia en el comportamiento de estas dos funciones:
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
Aquí está la salida 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
si la matriz se pasa por referencia, ¡hubiera esperado foo! para cambiar los ceros a unos.