2013-03-30 80 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 

這還不是最乾淨的方式做到這一點,但它提供了一個良好的基礎開始。

祝你好運! :)