Argumento da função Julia por referência

Os documentos dizem

Em Julia, todos os argumentos para funções são passados por referência.

então fiquei bastante surpreso ao ver uma diferença no comportamento dessas duas funções:

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 

aqui está a saída 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

se a matriz for passada por referência, eu teria esperado foo! para mudar os zeros para uns.

questionAnswers(4)

yourAnswerToTheQuestion