红宝石:"if !object.nil?"或"if object"

  • 本文关键字:object if nil 红宝石 ruby
  • 更新时间 :
  • 英文 :

它们

if/else/end语句中使用时是否相同?你平时做什么?我想知道是否有任何微妙的差异或边缘情况,object!object.nil?会有不同的反应。

有差异。例如:

false.nil?
# => false

所以:

if !false.nil?
  'foo'
end
# => "foo"
if false
  'foo'
end
# => nil

正如@tokland所建议的,在大多数情况下,使用!obj.nil?结构是不必要的。

布尔上下文中,!object.nil?object计算出不同的结果,这是一种且仅一种情况,那就是如果object false。在所有其他情况下,结果是相同的。

有了这个,我想我们可以回答你的真正问题(即:在防止object为零时,我是否必须使用if !object.nil?而不仅仅是if object

不,如果您想检查nil,您可以随时使用 if object .

if object测试

object是否nilfalse

!object.nil?测试object是否nil。(鲁比多克(

所以当object false时,它们有不同的值。

嗯。 如果object=falseif object的行为将与if !object.nil?不同。

仅此而已。

对象可以覆盖nil?但除非它们为 nil 或 false,否则它们不能为假。就我个人而言,我使用nil?或ActiveSupport的present?,以便保持这种灵活性。我也认为它读起来更好一点。

相关内容

最新更新