JT's Blog

Do the right things and do the things right.

Ruby - Nil? | Empty? | Blank?

| Comments

nil?

可使用在任何的object,檢查是否為nil,如果是nil會回傳true

1
2
3
4
5
a = "str"
b = nil

a.nil? # false
b.nil? # true

empty?

可使用在StringArrayHash,如果為長度為0 會回傳true

如果object 是nil,使用empty? 會出現NoMethodError

1
2
3
4
5
6
7
a = ""
b = []
c = {}

a.empty? # true
b.empty? # true
c.empty? # true

blank?

這實作在Rails ,是empty? 的強化版,不受限在StringArrayHash

1
2
3
4
5
6
7
nil.blank?    # true
false.blank?  # true
[].blank?     # true
{}.blank?     # true
"".blank?     # true
5.blank?      # false
0.blank?      # false

But 如果空白字串,會認定為true

1
2
"  ".blank? # false
"  ".empty? # true

注意:如果陣列的值都是空字串或是nil,會回傳true

1
['',nil].blank? # ture

可以使用.all? + blank? 的方式來檢查陣列的值

1
['',nil].all? &:blank # true

present?

這也是實作在Rails 但跟blank? 的判斷完全顛倒

1
2
3
4
5
6
7
nil.present?    # false
false.present?  # false
[].present?     # false
{}.present?     # false
"".present?     # false
5.present?      # true
0.present?      # true

總結

剛剛測試的結果,已經有整理成一份表格,可以透過表格查看要使用什麼方式來檢查boolean 值~

nil_empty_blank_present

Comments