1
我在Ruby中的函数:(全局变量$items
是一个Hash对象映射几串一些价值决定的item
的属性)红宝石认为,哈希的元素是整数
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
当我puts
它遍历当前项目(用注释的行做到了这一点),它给了我:
{"name"=>"Thing1", "keywords"=>["thing", "green"], ...}
但是当我尝试item["name"]
下一行(这绝对应该返回Thing1
),它给了我:
C:/somepath/someprogram.rb:125:in '[]': can't convert String into Integer (TypeError)
如果您需要键和值,请使用解构绑定。 –
如果你不知道“解构绑定”(我自己从来没有在Ruby社区听说过),他的意思是做类似'$ items.each do | key,value |' –
呃好吧,这似乎是问题所在: ) 谢谢! – itdoesntwork