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中不是不可变的,因此您可以将字符串传递给修改字符串的函数。

谢谢!这正是我需要知道的。