我在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)
答案 0 :(得分:2)
如果$items
是哈希,那么$items.each do |item|
将为该块产生[key, value]
对(数组)。如果您只想要这些值,请使用each_value
。