将变量保存在新实例中

时间:2018-04-10 09:43:47

标签: ruby-on-rails ruby object instance freeze

基本上,我希望在更新变量

后有一个旧的变量实例

以下是一些可能更好解释的例子:

variable = { a: "#fff" }
saved = variable
variable[:a] = "#000"

saved[:a]

目标是获得"#fff"。而是最后一行返回预期的"#000"。我试着冻结一个物体:

variable = { a: "#fff" }
saved = variable
saved.freeze
variable[:a] = "#000"

但这只会引发FrozenError: can't modify frozen Hash错误

2 个答案:

答案 0 :(得分:1)

只需复制变量

saved = variable.dup

答案 1 :(得分:0)

只需复制它:

variable = { a: "#fff" }
saved = variable.dup # attention here
variable[:a] = "#000"

saved[:a]