我刚刚偶然发现一件我不太理解的事情。我知道Ruby中的变量是引用。因此那些很棒的东西是可能实现的。但是当我将一个变量传递给一个方法时,它的行为很奇怪:
my_var_a = "nothing happend to me"
my_var_b = "nothing happend to me"
def parse_set(my_var_set)
my_var_set = "my value changed"
end
def parse_sub(my_var_sub)
my_var_sub.sub! /(.*)/, "my value changed"
end
parse_set(my_var_a)
parse_sub(my_var_b)
my_var_a # => "nothing happend to me"
my_var_b # => "my value changed"
你能解释一下为什么使用 sub!
可以工作而使用 =
会使对象保持不变吗?我如何避免使用 sub!
但又能获得相同的结果?
my_var_a = some_parse_method(my_var_a)
。 - Kaleb Brasee