La documentazione direfunzione Julia argomento per riferimento
In Julia, tutti gli argomenti alle funzioni vengono passati per riferimento.
quindi ero abbastanza sorpresa di vedere una differenza nel comportamento di queste due funzioni:
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
ecco inaspettatamente diversa uscita:
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 la matrice viene passata da riferimento, mi sarei aspettato che pippo! per cambiare gli zeri con quelli.
Ho anche visto il termine "call-pointer" (o "pass-by-pointer") usato per riferirsi a questo, che considero Breve e dritto al punto. In ogni caso, vale sempre la pena ricordare che i termini sono usati a volte per la teoria del linguaggio, a volte per scopi pratici. E questi significati non sempre coincidono, o addirittura differiscono all'interno di una disciplina che dipende dall'autore! –