2009-10-31 55 views
103

有沒有關於如何區分.nil?,.blank?.empty?的指南?何時使用空,空白,空?

我通常總是困惑於何時在我的應用程序中使用它們,因爲它們似乎意味着相同的事物,但具有不同的含義。

有沒有人對血淋淋的細節有任何備忘單?

回答

163
+3

僅包含「空白」字符的字符串被視爲「空白?」,但不包含「空」? 「\ n \ t」 – xhh 2013-02-28 08:21:06

+2

如果對象的值爲false,則空白也會返回true – riley 2013-03-08 04:19:37

+0

我認爲'nil'的描述不準確,因爲'nil.nil?'是true,但'nil'是'NilClass的對象'。 – 2015-05-06 07:19:36

5

我找到了一個很好的解釋here

零?測試對象是否爲 完全爲零,即是否爲 單一且僅需要 NilClass的實例。

空?是一些對象響應的方法 。您需要檢查每個案例的 文檔。例如,對於 示例,並且空數組是 不是零(它是一個數組是否正確?)並且 沒有元素。一個空字符串是 一個不是零(它是一個字符串 吧?)並且沒有字節,沒有任何東西。

空白?你要求的方法不是 屬於Ruby,它是一個Rails 擴展名: http://api.rubyonrails.com/classes/Object.html#M000011

如果您通過點擊鏈接在那個帖子的最後,你會發現,blank?方法簡單地結合了nil?empty?方法調用。

+0

'只包含「空白」字符的字符串被視爲空這個有用的表?但不是空的? 「\ n \ t」',因爲[@xhh](http://stackoverflow.com/questions/1654960/when-to-use-nil-blank-empty#comment21296385_1655001)在這個問題的另一個答案中寫道。 – ANeves 2013-09-17 00:07:48

6
  • nil?在所有Objects定義的,它只能在nil單返回true

  • blank?對所有對象定義的太,則返回true如果對象也響應empty?並且是空的,或者是一個false類型值(!object總是true)。

  • empty?在幾個集合對象上定義,如果它沒有元素,則是true。它也在String上定義。

注意blank?ActiveSupport而不是的Rails 1.8

168

在這裏我做了所有的情況enter image description here

+10

這個表格非常好 - 感謝分享! – BTHarris 2014-02-06 18:37:33

+2

這真的很有用。謝謝! – Linus 2014-02-08 16:36:14

+2

Bravo,Juliane :) – 2014-07-23 08:44:33