Ruby 如何计算作为列表的散列中的成员

Ruby 如何计算作为列表的散列中的成员,ruby,cucumber,Ruby,Cucumber,我有以下哈希(dummy{}),其中一个成员是数组,如何构建代码逻辑: (a) 评估每个键->值 (b) 计算每个键->值(如果它是散列中的数组) 我为一个只有一个值的键编写的代码是: eval(dummy)[a1.to_sym] 我需要一种干净的方法来计算数组中有多个值的散列成员 以下是IRB输出: 1.9.3-p327 :002 > dummy = { :a1 => "xyz", 1.9.3-p327 :003 > :b1 => ["

我有以下哈希(dummy{}),其中一个成员是数组,如何构建代码逻辑: (a) 评估每个键->值 (b) 计算每个键->值(如果它是散列中的数组)

我为一个只有一个值的键编写的代码是:

eval(dummy)[a1.to_sym]
我需要一种干净的方法来计算数组中有多个值的散列成员

以下是IRB输出:

1.9.3-p327 :002 > dummy  = { :a1 => "xyz",
1.9.3-p327 :003 >                :b1 => ["xyz1", "ayz2", "xyz3", "xyz4"] }
=> {:a1=>"xyz", :b1=>["xyz1", "ayz2", "xyz3", "xyz4"]}
现在我可以访问成员及其键值对(以非常简单的方式,如下所示:)


现在,我需要一个“通用”ruby代码来处理上述两种情况,以访问成员及其值-注意:例如,我只选择了1和4个值,但实际上我需要的是值范围在1000-5000之间的位置,确保所有内容都是一个数组,以便统一处理:

dummy  = { :a1 => "xyz",
           :b1 => ["xyz1", "ayz2", "xyz3", "xyz4"] }

dummy.each do |k, v|
  Array(v).each do |element| #Array(v) puts v in an Array, unless it already is an array.
    puts element
  end
  puts
end

你能举一个例子说明你正在尝试执行什么以及预期的输出吗?我正在尝试创建一个配置文件,其中每个项目都有一个唯一的哈希映射。您可以考虑将“dummy”替换为“project1”,将“a1”替换为目标服务器的类型(IP地址)。请澄清一下,我真的不知道你想达到什么目的。你能把你的问题修改为包括样本输出吗?你确定吗?你得到行动的需要了吗?我还是很困惑。
1.9.3-p327 :005 > pp dummy[:a1.to_sym]
"xyz"
=> "xyz"
1.9.3-p327 :006 > pp dummy[:b1.to_sym][0]
"xyz1"
=> "xyz1"
1.9.3-p327 :007 > pp dummy[:b1.to_sym][1]
"ayz2"
=> "ayz2"
1.9.3-p327 :008 > pp dummy[:b1.to_sym][2]
"xyz3"
=> "xyz3"
1.9.3-p327 :009 > pp dummy[:b1.to_sym][3]
"xyz4"
=> "xyz4"
dummy  = { :a1 => "xyz",
           :b1 => ["xyz1", "ayz2", "xyz3", "xyz4"] }

dummy.each do |k, v|
  Array(v).each do |element| #Array(v) puts v in an Array, unless it already is an array.
    puts element
  end
  puts
end