以下の内容はhttps://unageanu.hatenablog.com/entry/20070510/1178788643より取得しました。


ハッシュを複製する

Hash#dupでハッシュを複製します。再帰的なコピーは行われません。(shallow copy)

サンプル:

h = {
  :a=>"aa",
  :b=>{
    :x=>"xx",
  }
}
# 複製
h2 = h.dup

p h
p h2

puts "---"

# 変更
h2[:a] = "edit"
h2[:b][:x] = "edit"

# :bの値のハッシュは共有されている。
p h2
p h

出力:

{:a=>"aa", :b=>{:x=>"xx"}}
{:a=>"aa", :b=>{:x=>"xx"}}
---
{:a=>"edit", :b=>{:x=>"edit"}}
{:a=>"aa", :b=>{:x=>"edit"}}

油断してるとこんなことも。Rubyの文字列は可変です!

h = {
  :a=>"aa",
  :b=>{
    :x=>"xx",
  }
}
h2 = h.dup

p h
p h2

puts "---"
h2[:a].chop! << "x"

p h2
p h

出力:

{:a=>"aa", :b=>{:x=>"xx"}}
{:a=>"aa", :b=>{:x=>"xx"}}
---
{:a=>"ax", :b=>{:x=>"xx"}}
{:a=>"ax", :b=>{:x=>"xx"}}



以上の内容はhttps://unageanu.hatenablog.com/entry/20070510/1178788643より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14