这是我的方法
def dict(hash = {})
hash.each_key do |key|
if(hash[key] == nil)
p nil
else
p hash[key]
end
end
end
我试图接受这些参数作为参数 dict(' fish' =>'水生动物') 要么 字典('鱼) 但我一直收到这个错误
practice:36:in `dict': undefined method `each_key' for "fish":String (NoMethodError)
from practice:45:in `<main>'
我比较新,所以我不明白我是如何使用这个错误请帮助
答案 0 :(得分:2)
当您使用dict('fish')
调用方法时,hash
参数将设置为字符串'fish'
。 Ruby字符串类没有名为each_key
的方法,因此您得到no方法错误。
Ruby字符串API: http://ruby-doc.org//core-2.2.0/String.html
由于您需要同时接受字符串和哈希参数,因此您必须检查方法中的参数类。
def dict(word)
case word
when String
# do what should be done for 'fish'
when Hash
# do what should be done for 'fish' => 'aquatic animal'
end
end
有关case语句中类匹配如何工作的解释,请参阅this article。