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

本文介绍了Ruby及Rails中用于检查变量或对象是否为空的三种方法:.nil?、.empty? 和 .blank?。详细解释了每种方法的使用场景及其区别,并提供了具体的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这三个都是判空的。而 .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?不能用于整数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值