Ruby的.nil? .empty? .blank? .present?区别

.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
true .blank?         FALSE
  false .blank?       TRUE
  "true" .blank?      FALSE
  "" .blank?          TRUE
  "\n" .blank?        TRUE
  '\n' .blank?        FALSE
  'true' .blank?      FALSE
  '' .blank?          TRUE
  1 .blank?           FALSE
  p [].blank?          TRUE
  p [ 1 ].blank?         FALSE

例:.present?

 

1
2
3
4
nil.present?       =>  false
[].present?        =>  false
"hello" .present?   =>  true
[ "a" ].present?     =>  true

 出处http://bohsu.blog.51cto.com/6966437/1324907

猜你喜欢

转载自zhaomingyuan7.iteye.com/blog/2153275
今日推荐