当前位置: 代码迷 >> Ruby/Rails >> Ruby的.nil? .empty? .blank? .present?差别
  详细解决方案

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

热度:548   发布时间:2016-04-29 02:19:24.0
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
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?

?

?

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

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

  相关解决方案