我正在尝试做一个小实验,让我在此刻陷入困境。将值添加到哈希红宝石中的哈希值
我创建了新的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