Ruby中的nil?,empty?與Rails中的blank?,present?

A concise explanation of nil v. empty v. blank in Ruby on Rails
.nil?可以用在一切對象上,當對象爲nil時,返回true
.empty?可以用於字符串,數組或者哈希,當滿足下列條件時,返回true

  • String length == 0
  • Array length == 0
  • Hash length == 0

在nil對象上調用 .empty?會拋出NoMethodError異常。
.blank?就是爲此而生的。這個方法是Rails實現的,類似於.empty?可以作用於字符串,數組或者哈希,.blank?可以作用於認爲對象。

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?相反。

注意,就算數組中的元素都爲blank時,對數組調用.blank?仍然會返回false。對於這種情況時,使用.all?配合.blank?,如下例:

[ nil, '' ].blank? == false
[ nil, '' ].all? &:blank? == true 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章