当我打开IRB并粘贴
时h = {"colors" => ["red", "blue", "green"],
"letters" => ["a", "b", "c" ]}
h.assoc("letters") #=> ["letters", ["a", "b", "c"]]
h.assoc("foo") #=> nil
进入它我总是收到消息:
NoMethodError: undefined method `assoc' for {"letters"=>["a", "b", "c"], "colors"=>["red", "blue", "green"]}:Hash
from (irb):3
from :0
虽然此代码取自http://ruby-doc.org/core/classes/Hash.html#M000760 我做错了什么?
答案 0 :(得分:4)
Hash#assoc
是一个Ruby 1.9方法,在Ruby 1.8(您可能正在使用)中不可用。
如果你想要相同的结果,你可以做到
["letters", h["letters"]]
# => ["letters", ["a", "b", "c"]]
你也可以在Ruby 1.8中修补类似的行为:
class Hash
def assoc(key_to_find)
if key?(key_to_find)
[key_to_find, self[key_to_find]]
else
nil
end
end
end