【发布时间】:2012-03-17 03:50:20
【问题描述】:
在其他语言中,例如(例如,objective-c)在 nil 对象上调用方法会静默失败并返回 nil,但在 ruby 中会出现这样的错误...
undefined method `some_method' for nil:NilClass
这(对我而言)会产生如下代码:
if some_object && some_object.cool? # instead of if some_object.cool?
# do some cool stuff
end
或
some_object.do_awsome_thing if some_object
这一切看起来都是倒退和奇怪的。
两个问题
-
我做错了什么,处理可能出现 nil 对象的正确方法是什么
-
如果我只是猴子修补 nil 对象以返回 nil for missing_methods,会发生什么样的可怕可怕的事情?
IE:
class NilClass
def missing_method
nil
end
end
【问题讨论】:
-
迁移到其他堆栈交换站点?
-
不,这可能因为过于主观而被票数接近(即没有确定的、客观的答案,导致难以直接回答,并可能引发广泛的辩论)。
-
这是一个非常自以为是的问题,但它不经常发生的原因是因为失败是好的。查看Failing Fast
-
我想我问这个问题的原因之一是我对 ruby 很陌生,我没有意识到这可能是一个固执己见的问题..