NoMethodError:未定义方法,对象为 nil:NilClass... 已解释
这是一个常见的 Ruby 错误,它表示您尝试在对象上调用的方法或属性尚未定义。
NoMethodError: undefined method SOME_METHOD for nil:NilClass
例如,StringRuby 中的类有一个方法size(它与同义length,所以我可以这样写……)
greeting = "hello"
greeting.size
#=> 5
但loveliness该字符串不存在,所以当我输入时,会得到……
NoMethodError: undefined method loveliness for nil:NilClass
我发现,当我以为自己在操作一个带有方法的对象,但实际上却在操作一个带有属性的哈希时,就会出现这种情况。
my_hash[:loveliness]
# "very lovely" yay, this is a thing that exists!
my_hash.loveliness
# NoMethodError: undefined method loveliness nil:NilClass
当然,因为这是 Ruby,loveliness如果我们愿意,我们可以通过猴子补丁非常轻松地String定义类。
class String
def loveliness
"very lovely"
end
end
现在我们知道这条绳子有多好了。如果我说错了什么或者表达得不够清楚,请随时留言补充说明。
祝您编程愉快❤️
文章来源:https://dev.to/ben/nomethoderror-undefined-method-for-nil-nilclass-explained-422b