無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

ハッシュを複製する

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