class PassByValueScopeConfusion
def does_not_modify(s)
s = "DIFFERENT"
end
def does_modify(s)
s.upcase!
end
end
obj = PassByValueScopeConfusion.new
some_string = "abcdefg"
# does not change the value of some_string
obj.does_not_modify(some_string)
# changes the value of some_string
obj.does_modify(some_string)
我将一个字符串传递给一个方法,该方法在传入的字符串上调用破坏性方法,并且以某种方式修改了原始变量“some_string”。如果我能够使用破坏性方法在范围之外修改“some_string”变量,有没有办法使用赋值运算符(除了调用替换方法)来做到这一点?
编辑如果Ruby不允许使用赋值运算符,为什么Ruby允许使用破坏性运算符修改范围之外的变量?