0
A
回答
13
当您在Ruby中的对象上使用布尔运算符(如!
)时,必须先将该对象在幕后转换为布尔值(true
或false
)。在红宝石每个对象可以是“truthy”或“falsy”和Ruby的实现者已选择nil
是falsy,所以!nil
相当于!false
,其评估对true
。
+3
当用作表达式时,可能会说它“评估为真”或“评估为假”。正是这种行为允许'!!'被用来把东西渲染成布尔值。 '!nil'是'true','!! nil'是'false'。 – tadman
1
因为在一般情况下,比较,无被视为假,所以,如果你这样做:
if something_that_returns_nil
puts "did not return nil"
else
puts "returned nil"
你希望它会产生相反的行为,如果它是:
if !something_that_returns_nil
puts "did return nil"
else
puts "did not return nil"
所以,当你“反转”无它变为假,因为没有表示not_being_nil的特定对象(如不是零就是在Ruby中的任意值)。
4
的!
运算符是一元布尔非。如果其操作数是nil
或false
,它将返回true
。否则它将返回false
。
!nil # => true
!false # => true
!Object.new # => false
在布尔表达式红宝石始终考虑nil
和false
为false
和所有其余的值true
。
相关问题
- 1. 为什么Ruby有预定义的常量TRUE,FALSE和NIL?
- 2. /ell/==='Hello'在Ruby中为true。为什么?
- 3. RETURN TRUE在php函数中做什么?
- 4. ABAddressBookCreate(),ABAddressBookGetGroupCount,... return @“0x00000000 <nil>”?
- 5. 为什么Apache CXF不尊重'nil =“true”'
- 6. 为什么@ user.update_attributes(nil)返回true?
- 7. 为什么Ruby中的a = a`` nil`?
- 8. Ruby on Rails to_xml nil =“True”
- 9. 什么时候做dateByAddingComponents:toDate:options return nil?
- 10. 为什么在Python中'> 0 True?
- 11. 为什么TRUE ==“TRUE”在R中为TRUE?
- 12. 在Ruby(1.9.3)中,为什么nil没有响应比较运算符'<=>`?
- 13. 为什么在elixir中is_atom(nil)等于true?
- 14. UICollectionViewCell checkmark return nil
- 15. 在Ruby中,为什么nil [1] = 1评估为零?
- 16. 为什么在Ruby on Rails 3中返回Nil?
- 17. 为什么(true> null)在JavaScript中总是返回true?
- 18. CGImageSourceCreateWithURL return always nil
- 19. NSString boolValue return nil
- 20. NSPasteboard generalPasteboard return nil
- 21. ios11- UIFont return nil
- 22. 为什么ruby2.0中的true和nil的object_id被改变了?
- 23. 为什么.where(:attribute => nil)检查nil值?
- 24. 为什么string> int评估为True?
- 25. 为什么self.splitViewController == nil?
- 26. 为什么5> 4> 3!=(5> 4 && 4> 3)在Javascript中为true?
- 27. 我是什么:nil =“true”是什么意思?
- 28. 为什么myInstance = nil而不是self.myInstance = nil?
- 29. 为什么(=(vector nil)(vec nil))返回false?
- 30. 为什么Nil :: Nil会返回List(List())?
它还能是什么? “真”是非伪造价值的最合理的候选者。它来自定义。 – sawa
你期望它做什么? –