在Ruby on Rails中对nil v. empty v. blank的简明解释
我发现自己反复在寻找Ruby on Rails中 "nil"、"blank "和 "empty "的区别的明确定义。 这是我最接近的一次。
-
blank?
对象是假的、空的或一个空白的字符串。例如,""
、" "
、nil
、[]
和{}
都是空白。 -
nil?
对象是NilClass的实例。 -
empty?
对象是特定于类的,其定义因类而异。一个字符串如果没有字符就是空的,一个数组如果不包含任何项目就是空的。
是否有什么遗漏,或者可以做一个更严格的比较?
1093
3
.nil?
可以在任何对象上使用,如果对象是nil,则为真。.empty?
可以在字符串、数组和哈希上使用,如果是,则返回true。在一个为nil的东西上运行
.empty?
将抛出一个`NoMethodError'。这就是".blank? "的作用。它是由Rails实现的,可以对任何对象进行操作,也可以像
.empty?
那样对字符串、数组和哈希进行操作。.blank?
在非空但只包含空白的字符串上也会评估为真。Rails还提供了
.present?
,它返回.blank?
的否定值。数组问题:
blank?
会返回false
,即使数组中的*个元素都是空白。在这种情况下要确定空白,请使用all?
和blank?
,例如。一个区别是,
.nil?
和.empty?
是编程语言Ruby提供的方法,而.blank?
是网络开发框架Rails添加的东西。不要忘记
any?
,它通常是!empty?
。在Rails中,我通常用if something
或unless something
在语句的结尾处检查是否有东西存在,然后在需要时使用blank?
,因为它似乎在任何地方都有效。