.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?方法两者表达的意思是一样的。
1 2 3 4 5 6 | nil . nil ??????? =>? true false . nil ????? =>? false 1 . nil ????????? =>? false 0 . nil ????????? =>? false "" . nil ???????? =>? false []. nil ???????? =>? false |
1 2 3 4 5 | "" .empty?????????? =>? true "abc" .empty??????? =>? false [].empty?????????? =>? true [ 1 ,? 2 ,? 3 ].empty??? =>? false 1 .empty??????????? => NoMethodError?? #说明 empty? 方法不能用于整数 |
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 |
?
1 2 3 4 | nil.present??????? =>? false [].present???????? =>? false "hello" .present??? =>? true [ "a" ].present????? =>? true
|