我对以下 Ruby 代码有点困惑:
a = "hello"
b = a
a #=> "hello"
b #=> "hello"
a.upcase!
a #=> "HELLO"
b #=> "HELLO"
a = a.capitalize
a #=> "Hello"
b #=> "HELLO"
为什么a.upcase!
会影响b
的值,而a = a.capitalize
却不会?
最佳答案
执行a.capitalize!
这也会影响b
。
发生了什么?
当您大写
时,会返回字符串的副本,其中第一个字符转换为大写,其余字符转换为小写。您刚刚将其分配给变量a
。然而,b
仍然指向a
的旧值,即HELLO
。
但是,当您执行大写!
时,字符串本身会被修改,因此b
也会受到影响。
示例:
a = "hello"
b = a
a.capitalize
# => "Hello"
a
# => "hello" # remains unchanged
b
# => "hello" # which is the actual value of a
a.capitalize!
# => "Hello"
a
# => "Hello" # a's value is changed
b
# => "Hello" # which is the actual value of a
关于ruby - 简单的 Ruby 变量可变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28721836/