.nil? , .empty? .blank? .present?區別:
-
.nil? 和 .empty? 是ruby的方法。 .blank? 是rails的方法。
-
.nil? 判斷對象是否存在(nil)。不存在的對象都是nil的。
-
.empty? 對象已經存在,判斷是否爲空字段,比如一個字符串是否爲空串,或者一個數組中是否有值
-
.blank? 相當於同時滿足 .nil? 和 .empty? 。railsAPI中的解釋是如果對象是:false, empty, 空白字符. 比如說: "", " ", nil , [], 和{}都算是blank。 (object.blank? 相當於 object.nil?||object.empty?)。
-
present?方法就是blank?方法的相反,判斷是否存在,因此present?方法與!blank?方法兩者表達的意思是一樣的。
例:.nil?
1
2
3
4
5
6
|
nil . nil ? => true
false . nil ? => false
1 . nil ? => false
0 . nil ? => false
"" . nil ? => false
[]. nil ? => false
|
例:.empty?
1
2
3
4
5
|
"" .empty? => true
"abc" .empty? => false
[].empty? => true
[ 1 , 2 , 3 ].empty? => false
1 .empty? => NoMethodError #說明 empty? 方法不能用於整數
|
例:.blank?
1
2
3
4
5
6
7
8
9
10
11
|
p true .blank? FALSE
p false .blank? TRUE
p "true" .blank? FALSE
p "" .blank? TRUE
p "\n" .blank? TRUE
p '\n' .blank? FALSE
p 'true' .blank? FALSE
p '' .blank? TRUE
p 1 .blank? FALSE
p [].blank? TRUE
p [ 1 ].blank? FALSE
|
例:.present?