我正在嘗試做一個小實驗,讓我在此刻陷入困境。將值添加到哈希紅寶石中的哈希值
我創建了新的Hash
tt = Hash.new()
然後,添加兩個散列裏面的鑰匙:
tt.merge!(:in => Hash.new)
tt.merge!(:out => Hash.new)
所以我有一個哈希看起來像這樣:
{
:in => {},
:out => {}
}
現在我有另一個叫做res的哈希散列,我遍歷並在每個散列上執行IF語句:
res.each do |x|
if x[:id] == nil
tt[:out].merge!(x)
else
tt[:in].merge!(x)
end
end
但是,這隻會將前一個散列的最後一個值附加到新散列的內部和外部。
我所要做的是使用IF語句提出了新的哈希
所以它結束了看起來像IN或OUT的項下:
{
:in => {{:1 => 1 ,:2 => 1 ,:3 => 1 ,:4 => 1 ,:5 => 1 },{:1 => 1 ,:2 => 1 ,:3 => 1 ,:4 => 1 ,:5 => 1 }},
:out => {{:1 => 1 ,:2 => 1 ,:3 => 1 ,:4 => 1 ,:5 => 1 }, {:1 => 1 ,:2 => 1 ,:3 => 1 ,:4 => 1 ,:5 => 1 }}
}
而且 - 我應該使用哈希這個或數組?我想將它最終導出爲JSON。
例如,這可以工作。但不知道這是否是正確的:
tt = Hash.new(:in => Hash.new, :out => Hash.new)
tt.merge!(:in => Array.new)
tt.merge!(:out => Array.new)
ap tt.class
res.each do |x|
if x[:id] == nil
tt[:out] << x
else
tt[:in] << x
end
end
Thnaks
你說'res'是一個散列,但你的'res.each'只包含一個參數。通常你需要兩個:鍵和值。你可以發佈一個'res'的例子嗎? – knut