如果我问自己object.not_nil?
vs ,我想我会更好地看到我的代码!object.nil?
。所以我的问题是:真的没有!nil 的便捷方法吗?加糖?它是在我眼前而我看不到它还是我只是错过了一个重要的点?
问问题
114 次
5 回答
6
这个怎么样?
not object.nil?
但更容易做的事情是通过测试变量本身来检查“真实性”。因为nil
是隐含的false
,你可以检查object
.
于 2012-09-27T13:00:26.603 回答
4
您可以在上层引入糖。代替:
if not object.nil?
你可以写:
unless object.nil?
于 2012-09-27T13:10:00.880 回答
3
那这个呢 ?
if object # sth end
它与如果为 false 则不会执行
object
不同,但取决于您的代码,它可能会更好。另一种解决方案(这也不相同),因为您用
ruby-on-rails-3
: usingpresent?
which will not execute the block for[]
or{}
distinct标记您的问题!object.nil?
。另一个取决于具体情况:如果您的情况更复杂(使用and/or ) ,使用
unless
which 将不是很好。&&
||
如果您的情况是这种形式:
if !object.nil? && object.something? # sth end
您可以
try
像使用 Rails 一样使用,如下所示:if object.try(:something?) # sth end
在所有其他情况下,
!object.nil?
或者not object.nil?
保持我猜的最佳解决方案。
于 2012-09-27T13:12:31.030 回答
2
#nil 附近什么时候方便?讨论,Activesupport 的方法#blank?和#present?也不应该被遗忘。
于 2012-09-27T13:19:53.477 回答
2
不是你一定想要,但你可以not_nil?
自我介绍:
class Object
def not_nil?
!self.nil?
end
end
那么您可以执行以下操作:
nil.not_nil?
==> false
3.not_nil?
==> true
a = []
a.not_nil?
==> true
于 2012-09-27T13:46:33.993 回答