小编Dar*_*osa的帖子

Julia 函数:使可变类型不可变

来自 Wolfram Mathematica,我喜欢这样的想法,即每当我将变量传递给函数时,我实际上是在创建该变量的副本。另一方面,我了解到在 Julia 中有可变和不可变类型的概念,前者通过引用传递,后者通过值传递。有人可以向我解释这种区别的优势吗?为什么数组是通过引用传递的?我天真地认为这是一个不好的方面,因为它会产生副作用并破坏编写纯函数代码的可能性。我的推理哪里错了?有没有办法使数组不可变,这样当它传递给函数时,它实际上是按值传递的?

这里是代码示例

#x is an in INT and so is immutable: it is passed by value
x = 10
function change_value(x)
    x = 17
end

change_value(x)

println(x)

#arrays are mutable: they are passed by reference
arr = [1, 2, 3]

function change_array!(A)
    A[1] = 20
end

change_array!(arr)

println(arr)
Run Code Online (Sandbox Code Playgroud)

这确实修改了数组 arr

mutable immutability julia

9
推荐指数
1
解决办法
476
查看次数

标签 统计

immutability ×1

julia ×1

mutable ×1