Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么var在函数执行后,以下代码中传递给函数的变量会发生变化?
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 中不是不可变的,因此您可以将字符串传递给修改字符串的函数。