2013-03-30 42 views
0

我传递给函数两个参数:如何比较散列值与数组值?

function_a(hash1, array1) 

如果我打印每个参数的class.name在函数内(即hash1.class.name)它显示为:

Hash1:Hash & Array-1:Array 

两个数据的成员通过前结构是:

哈希-1:

{:cmd=>"-add set isteautoSet1 2013-04-02 23:00:00", 
:criteria=>"isteautoSet1 2013-04-02 23:00:00", 
:setname=>"isteautoSet1", 
:operation=>"add"} 

阵列-1:

[{:setname=>"isteautoSet1", 
    :numrules=>"0", 
    :tests=>"0", 
    :lastchanged=>"2013-03-30 06:35:40", 
    :filtertype=>"summary", 
    :expires=>"2013-04-02 23:00:00"}, 
{:setname=>"set1", 
    :filtertype=>["company"], 
    :rulenum=>"1", 
    :criteria=>"mydomain.com"}, 
{:setname=>"set1", 
    :filtertype=>["individual"], 
    :rulenum=>"2", 
    :criteria=>"yourdomain.com"}] 

我在function_a的目标是:

验证从与hash-1:criteria("setname" + " " + "expires")字段的array -1值匹配。

当我做比较时,我总是收到“无法将符号转换为整型(TypeError)”。看起来问题在于使用“each”方法访问数组内容。

回答

1

如果我理解你的权利,也许这是你的东西:

rules.each do |hash| 
    if hash.has_key?(:setname) 
     if hash[:setname].eql?(cmd_hash[:setname]) 
      puts "found value" 
     end 
    end 
end 

这还不是最干净的方式做到这一点,但它提供了一个良好的基础开始。

祝你好运! :)