Các tài liệu nóiJulia chức năng lập luận bằng cách tham khảo
Trong Julia, tất cả các đối số cho chức năng này thông qua tham khảo.
vì vậy tôi đã khá ngạc nhiên khi thấy một sự khác biệt trong hành vi của hai chức năng:
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
đây là sản phẩm bất ngờ khác nhau:
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
nếu mảng được thông qua tham khảo, tôi đã mong đợi foo! để thay đổi số không thành số 0.
Tôi cũng thấy thuật ngữ 'call-by-pointer' (hoặc 'pass-by-pointer') được sử dụng để tham chiếu đến điều này, ngắn và cho điểm. Trong mọi trường hợp, nó luôn đáng nhắc nhở rằng các điều khoản được sử dụng đôi khi vì mục đích của lý thuyết ngôn ngữ, đôi khi cho mục đích thực hành. Và những ý nghĩa đó không phải lúc nào cũng trùng hợp, hoặc thậm chí khác nhau trong một kỷ luật tùy thuộc vào tác giả! –