Ruby认为hash的元素是Integer

时间:2011-11-27 18:02:58

标签: ruby hash

我在Ruby中有一个函数:

def find_item(keyword)
    potential = []
    $items.each do |item|
        puts item                                 # <-- for debugging purposes
        if item["name"].downcase== keyword
            potential << item["name"].downcase
        elsif item["keywords"].index(keyword) != nil
            potential << item["name"].downcase
        end
    end
    return potential
end

(全局变量$items是一个Hash对象,它将几个字符串映射到一些确定item属性的值。)

当我puts它正在迭代的当前项目时(带有注释的行就是这样),它给了我:

{"name"=>"Thing1", "keywords"=>["thing", "green"], ...}

但是当我在下一行(肯定会返回item["name"])上尝试Thing1时,它会给我:

C:/somepath/someprogram.rb:125:in '[]': can't convert String into Integer (TypeError)

1 个答案:

答案 0 :(得分:2)

如果$items是哈希,那么$items.each do |item|将为该块产生[key, value]对(数组)。如果您只想要这些值,请使用each_value