Ruby中的nil?,empty?与Rails中的blank?,present?

25 篇文章 0 订阅

A concise explanation of nil v. empty v. blank in Ruby on Rails
.nil?可以用在一切对象上,当对象为nil时,返回true
.empty?可以用于字符串,数组或者哈希,当满足下列条件时,返回true

  • String length == 0
  • Array length == 0
  • Hash length == 0

在nil对象上调用 .empty?会抛出NoMethodError异常。
.blank?就是为此而生的。这个方法是Rails实现的,类似于.empty?可以作用于字符串,数组或者哈希,.blank?可以作用于认为对象。

nil.blank? == true
false.blank? == true
[].blank? == true
{}.blank? == true
"".blank? == true
5.blank? == false
0.blank? == false

对于只包含空格的字符串,.blank?的返回同样为true

"  ".blank? == true
"  ".empty? == false

Rails同样提供了.present? 方法,其返回值与.blank?相反。

注意,就算数组中的元素都为blank时,对数组调用.blank?仍然会返回false。对于这种情况时,使用.all?配合.blank?,如下例:

[ nil, '' ].blank? == false
[ nil, '' ].all? &:blank? == true 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值