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

这三个都是判空的。而 .nil? 和 .empty? 是ruby的方法。 .blank? 是rails的方法

.nil?  判断对象是否存在(nil)。不存在的对象都是nil的

.empty? 对象已经存在,判断是否为空字段,比如一个字符串是否为空串,或者一个数组中是否有值。类似于判断length是否是0

.blank?   可以这样理解:.blank?=(.empty?||.nil?)。如果对象是:false, empty,  "", " ", nil, [], 和{}都算是blank。  

除了 false 本身之外,所有的 Ruby 对象中nil是唯一一个布尔值为“假”的。基本上所有其他的 Ruby 对象都是“真”的,包括 0
>> "".nil?
=> false
>> nil.nil?
=> true

>> "foo".nil?
=> false
>> "".nil?
=> false
>> nil.nil?
=> true


因为 Ruby 中的一切都是对象,那么 nil 也是对象,所以它也可以响应方法
>> nil.to_s
=> ""

nil 对象本身无法响应 empty? 方法,但是 nil.to_s 可以
>> nil.empty?
NoMethodError: You have a nil object when you didn\'t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.empty?
>> nil.to_s.empty?     
=> true
>> "      ".empty?
=> false


注意一点:empty?不能用于整数

猜你喜欢

转载自wangsuting.iteye.com/blog/1997637