документы говорятЮлия аргумент функции по ссылке
В Юли, все аргументы функции передаются по ссылке.
, так что я был очень удивлен увидеть разницу в поведении этих двух функций:
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! изменить нули на единицы.
Я также видел термин «вызов по указателю» (или «проход по указателю»), используемый для ссылки на это, что я считаю короткое и точное. В любом случае, всегда стоит напоминать, что термины используются иногда для целей теории языка, иногда для целей практики. И эти значения не всегда совпадают или даже отличаются в пределах дисциплины в зависимости от автора! –