可能重複:
A concise explanation of nil v. empty v. blank in Ruby on Rails.nil?,.blank?之間的區別?和.empty?
誰能告訴我之間.nil?.blank?.empty區別?在紅寶石?
任何答案將不勝感激。
可能重複:
A concise explanation of nil v. empty v. blank in Ruby on Rails.nil?,.blank?之間的區別?和.empty?
誰能告訴我之間.nil?.blank?.empty區別?在紅寶石?
任何答案將不勝感激。
在Ruby中,nil
位於一個對象(類NilClass
的單個實例)中,因此可以對其調用方法。 nil?
是Ruby中的一種標準方法,可以在全部對象上調用,並返回true
爲nil
對象,false
爲其他任何內容。
empty?
是一個標準的Ruby方法一些對象像數組,哈希和字符串。它的確切行爲將取決於特定的對象,但通常如果對象不包含元素,則返回true
。
blank?
不是標準的Ruby方法,但是被添加到所有對象通過導軌和用於nil
,false
,空,或一個空格的字符串返回true
。
因爲empty?
沒有被定義爲所有對象你會得到一個NoMethodError
如果您在nil
叫empty?
所以要避免寫東西像if x.nil? || x.empty?
Rails添加的blank?
方法。
回答後,我發現this question has been asked before所以你應該檢查答案,這個問題了。
感覺它;)
無?
nil.nil?
#=> true
[].nil?
#=> false
"".nil?
#=> false
" ".nil?
#=> false
EMPTY?
[].empty?
#=> true
nil.empty?
#=> undefined method
"".empty?
#=> true
" ".empty?
#=> false
BLANK?
[].blank?
#=> true
nil.blank?
#=> true
"".blank?
#=> true
" ".blank?
#=> true
任何ruby變量都是一個對象,所以它可以被單元化/取消設置(設置爲nil)。如果沒有初始化
b = nil
b.nil? # true
b = 'string value'
b.nil? # false
數組,字符串nil?
方法返回true,在紅寶石流可以包含任何數據,因此它們可以是空的。該empty?
方法返回true若然
array = []
array.empty? # true
array << 5 << 4 # [5, 4]
array.empty? # false
string = "" # empty line
string.empty? # true
blank?
是的ActiveSupport具體方法(在任何對象可用的),並且與的ActiveSupport RubyOnRails可用。如果對象爲零或空,它將返回true。
'空白?'如果ActiveSupport方法 – fl00r
@ fl00r是的,你是對的。我會編輯答案 – Ribtoks