为什么当我将常量赋给变量并更新它时,常量会更新为?它是预期的行为还是错误?
ruby-1.9.3-p0 :001 > A = { :test => '123' }
=> {:test=>"123"}
ruby-1.9.3-p0 :002 > b = A
=> {:test=>"123"}
ruby-1.9.3-p0 :003 > b[:test] = '456'
=> "456"
ruby-1.9.3-p0 :004 > A
=> {:test=>"456"}
Run Code Online (Sandbox Code Playgroud)
这是预期的行为,但为什么并不总是显而易见的.这是Ruby等语言中非常重要的区别.这里有三件事:
常数 A
变量 b
哈希 { :test => '123' }
前两个是两种变量.第三个是一个对象.变量和对象之间的区别至关重要.变量只是指对象.将同一对象分配给两个变量时,它们都引用同一个对象.只创建了一个对象,因此当您更改它时,两个变量都会引用已更改的对象.
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |