我正在传递一个函数两个参数:
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
的目标是:
使用array
值("setname" + " " + "expires")
验证hash-1
- :criteria
字段值的匹配。
当我进行比较时,我一直得到“无法将符号转换为整数(TypeError)”。看起来问题在于使用“each”方法访问数组内容。
答案 0 :(得分:1)
如果我理解你的话,也许这适合你:
rules.each do |hash|
if hash.has_key?(:setname)
if hash[:setname].eql?(cmd_hash[:setname])
puts "found value"
end
end
end
这不是最干净的方法,但它为启动提供了良好的基础。
祝你好运! :)