0

関数に 2 つの引数を渡します。

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は次のとおりです。

fieldsのarray-1 値と value の一致を検証します。("setname" + " " + "expires")hash-1:criteria

比較を行うと、「シンボルを整数に変換できません (TypeError)」というメッセージが表示され続けます。「each」メソッドを使用して配列コンテンツにアクセスする際に問題があるようです。

4

1 に答える 1

1

私があなたを正しく理解しているなら、これはあなたのためのものかもしれません:

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

これは最もクリーンな方法ではありませんが、開始するための良いベースを提供します。

幸運を!:)

于 2013-03-30T07:36:16.903 に答える