A concise explanation of nil v. empty v. blank in Ruby on Rails
.nil?
可以用在一切對象上浮还,當(dāng)對象為nil時,返回true
.empty?
可以用于字符串革半,數(shù)組或者哈希碑定,當(dāng)滿足下列條件時,返回true
- String length == 0
- Array length == 0
- Hash length == 0
在nil對象上調(diào)用 .empty?
會拋出NoMethodError
異常又官。
.blank?
就是為此而生的延刘。這個方法是Rails實現(xiàn)的,類似于.empty?
可以作用于字符串六敬,數(shù)組或者哈希碘赖,.blank?
可以作用于認(rèn)為對象。
nil.blank? == true
false.blank? == true
[].blank? == true
{}.blank? == true
"".blank? == true
5.blank? == false
0.blank? == false
對于只包含空格的字符串,.blank?
的返回同樣為true
" ".blank? == true
" ".empty? == false
Rails同樣提供了.present?
方法普泡,其返回值與.blank?
相反播掷。
注意,就算數(shù)組中的元素都為blank時撼班,對數(shù)組調(diào)用.blank?
仍然會返回false歧匈。對于這種情況時,使用.all?
配合.blank?
砰嘁,如下例:
[ nil, '' ].blank? == false
[ nil, '' ].all? &:blank? == true