我想重塑一個函數內的矩陣,所以我「聲明」了一個函數外的數組,並在函數中使用了reshape()
。即使數組是可變的,它也不會工作。爲什麼Julia中的reshape()不會改變函數中數組的內容?
julia> my_array = 1:10
1:10
julia> function test(array)
array = reshape(array, 2, 5)
println(array)
end
test (generic function with 1 method)
julia> test(my_array)
[1 3 5 7 9; 2 4 6 8 10]
julia> println(my_array)
1:10
在函數內的,my_array
已經再成形爲一個2 * 5矩陣,但它執行功能之後恢復1:10。
我想知道背後的原因,以及如何重塑形狀內的全局數組?
編輯:我的問題不同於variable references in lisp,我知道將變量副本傳遞給堆棧的想法。對於這個問題,我不知道爲什麼特定函數reshape()
不會更改數組的內容,即使我傳遞了可變對象的引用。
[Lisp的變量引用]的可能的複製(http://stackoverflow.com/questions/1249991/variable -references-in-lisp) – Kaz