2013-04-26 46 views
-2

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

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

我已经为只有一个值的密钥的代码是:

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

现在我可以如下:)

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" 

访问成员和他们的键值对(在一个非常简单的方法,现在,我需要注意:例如,我只选择了1和4的值,但实际上我需要的是值范围从1000到5000的地方

+0

您能举一个例子说明您正在尝试执行什么以及预期的输出吗? – tadman 2013-04-26 17:43:15

+0

我正在尝试为每个项目创建一个具有唯一哈希映射的配置文件。您可以考虑用目标服务器(IP地址)的类型替换“project1”和“a1”的“dummy”。 – newruby 2013-04-26 17:45:30

+0

不确定点 - a和点-b。请清除它。 – 2013-04-26 17:47:45

回答

1

确保一切都是阵列允许统一处理:

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 
+0

你确定吗?你有没有得到操作的需要?我仍然困惑。 – 2013-04-26 18:21:04

相关问题