Юлия функция аргумент по ссылке

Документы говорят

У Юлии все аргументы функций передаются по ссылке.

поэтому я был довольно удивлен, увидев разницу в поведении этих двух функций:

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! изменить нули на единицы.

Ответы на вопрос(4)

Ваш ответ на вопрос