Possible Duplicate:
A concise explanation of nil v. empty v. blank in Ruby on Rails

谁能告诉我Ruby中nil?blank?empty?的区别吗?

推荐答案

在Ruby中,nil在一个对象中(类NilClass的一个实例).这意味着可以对其调用方法.nil?是Ruby中的一个标准方法,可以对all个对象调用,对nil个对象返回true,对其他任何对象返回false.

empty?是一个标准的Ruby方法,用于some个对象,比如数组、哈希和字符串.它的确切行为将取决于特定对象,但如果对象不包含元素,则通常返回true.

blank?不是标准的Ruby方法,但Rails将其添加到all个对象中,并返回true表示nilfalse、空或空白字符串.

因为empty?并不是为所有对象定义的,所以如果在nil上调用empty?,则会得到NoMethodError,因此为了避免编写if x.nil? || x.empty?之类的内容,Rails添加了blank?方法.


在回答之后,我发现了一个早期的问题,"How to understand nil vs. empty vs. blank in Rails (and Ruby)",所以你也应该判断一下这个问题的答案.

Ruby相关问答推荐

为什么非数字在Ruby中被转换为integer?

无法解析音频文件 track1.m4a

Rubymine - 启用行号

Ruby 相当于 Groovy 的 Elvis (?:) 运算符?

在Ruby中将关键字与常规参数混合?

如何以不同 colored颜色 输出我的 ruby​​ 命令行文本

Rails - RSpec - let和let!之间的区别

try 学习/理解 Ruby 的 setter 和 getter 方法

Ruby 中的抽象方法

在 jekyll 博客中支持标签的简单方法

错误:Windows 的 SASS 安装

Bundle不适用于 rbenv

如何在 ruby​​ 中进行命名捕获

使用 `?`(问号)在 Ruby 中获取 ASCII 字符代码失败

工厂女孩 - 目的是什么?

将整个文本文件作为单个字符串读取的合理方法是什么?

class << self vs self.method with Ruby:什么更好?

Ruby 中的动态方法调用

如何在 Mac OS Sierra 10.12 上安装 Nokogiri

Ruby Activerecord IN 子句