为什么在执行函数后,传递给以下代码中的函数的变量var
发生了变化?
def my_func(my_var)
out_var = my_var
out_var[3]="STUFF"
return out_var
end
var = "Testing"
puts my_func(var)
puts var
输出:
TesSTUFFing
TesSTUFFing
为什么“var”已被更改?有人可以向我解释一下吗?
答案 0 :(得分:8)
在Ruby中,变量通过引用传递。
您必须明确克隆变量:
def my_func(my_var)
out_var = my_var.clone
out_var[3]="STUFF"
out_var
end
答案 1 :(得分:2)
字符串在Ruby中不是不可变的,因此您可以将字符串传递给修改字符串的函数。