gpt4 book ai didi

ruby - 为什么分配给变量常量被更新

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:27 25 4
gpt4 key购买 nike

为什么当我将常量分配给变量并更新它时,常量被更新为?这是预期的行为还是错误?

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"}

最佳答案

这是预期的行为,但原因并不总是很明显。在像 Ruby 这样的语言中,这是一个非常重要的区别。这里有三件事在起作用:

  1. 常量A

  2. 变量b

  3. 散列 { :test => '123' }

前两个都是变量。第三个是对象。变量和对象之间的区别是至关重要的。变量只是引用对象。当您将同一个对象分配给两个变量时,它们都引用同一个对象。只创建了一个对象,因此当您更改它时,两个变量都引用更改后的对象。

关于ruby - 为什么分配给变量常量被更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com