Julia Funktionsargument durch Referenz
Die Dokumente sagen
In Julia werden alle Argumente zu Funktionen als Referenz übergeben.
so ich war ziemlich überrascht, einen Unterschied im Verhalten dieser beiden Funktionen zu sehen:
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
hier ist die unerwartet andere Ausgabe:
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
wenn das Array als Referenz übergeben wird, hätte ich foo erwartet! die Nullen in Einsen zu ändern.