我已盡力將其表述出來。我有一個哈希值,我可以對其執行一些操作,但在執行此操作之前,我將此哈希值存盤在另一個變數中。現在當我訪問這個變數時,這些值似乎已經改變了,我該如何繞過它。例子:
hash = {a: "1", b: "2", c: "3"}
hash_copy = hash
hash["a"]=4
puts(hash_copy["a"]) #prints 4 instead of 1
如何讓put陳述句列印1而不是4,即列印原始值。
uj5u.com熱心網友回復:
deep_dup是你的朋友
hash_copy = hash只是分配一個指標而不是復制
所以 ruby?? 特定選項是clone和deep_copy
在你的情況下copy會做,但兩者都應該適合你
紅寶石克隆
hash_copy = hash.clone
Rails,在早期的 Rails 版本中有點問題,但它是一個 ruby?? 函式,對你有用
hash_copy = hash.deep_dup
是你需要的
https://apidock.com/rails/Hash/deep_dup
uj5u.com熱心網友回復:
Hash#merge改為使用它回傳哈希的修改副本:
hash = {a: "1", b: "2", c: "3"}
hash_copy = hash.merge(a: 4)
一般來說,分配散列鍵應該只用于顯式修改散列 - 對于其他所有事情,都有更好的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358372.html
標籤:红宝石轨道 红宝石 目的 ruby-on-rails-3 散列
下一篇:當相關表有別名時如何按關系排序
