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
你期望它做什麼? –