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

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 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • .nil? , .empty? .blank? .present?区别: .nil? 判断对象是否存在(nil)。...
    GALAXY_ZMY阅读 8,052评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,486评论 19 139
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,451评论 1 10
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,461评论 0 4
  • 远程在服务器上跑程序之后,在本地查看tensorboard 1.在服务器上跑完,tensorflow的程序之后。在...
    芸思阅读 4,021评论 0 0