Ruby:传递给函数的变量发生更改
为什么变量Ruby:传递给函数的变量发生更改,ruby,string,function,Ruby,String,Function,为什么变量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”发生了变化?有人能给我解释一下吗?在Ruby中,变量是通过引用传递的 必须显式克隆变量: def my_func(my_
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”发生了变化?有人能给我解释一下吗?在Ruby中,变量是通过引用传递的 必须显式克隆变量:
def my_func(my_var)
out_var = my_var.clone
out_var[3]="STUFF"
out_var
end
字符串在Ruby中不是不可变的,因此您可以将字符串传递给修改字符串的函数。谢谢!这正是我需要知道的。