我发现自己反复在寻找Ruby on Rails中 "nil"、"blank "和 "empty "的区别的明确定义。 这是我最接近的一次。
blank?
对象是假的、空的或一个空白的字符串。例如,""
、" "
、nil
、[]
和{}
都是空白。
nil?
对象是NilClass的实例。
empty?
对象是特定于类的,其定义因类而异。一个字符串如果没有字符就是空的,一个数组如果不包含任何项目就是空的。
是否有什么遗漏,或者可以做一个更严格的比较?
.nil?
可以在任何对象上使用,如果对象是nil,则为真。
.empty?
可以在字符串、数组和哈希上使用,如果是,则返回true。
在一个为nil的东西上运行.empty?
将抛出一个`NoMethodError'。
这就是".blank? "的作用。它是由Rails实现的,可以对任何对象进行操作,也可以像.empty?
那样对字符串、数组和哈希进行操作。
nil.blank? == true
false.blank? == true
[].blank? == true
{}.blank? == true
"".blank? == true
5.blank? == false
0.blank? == false
.blank?
在非空但只包含空白的字符串上也会评估为真。
" ".blank? == true
" ".empty? == false
Rails还提供了 .present?
,它返回.blank?
的否定值。
数组问题:blank?
会返回false
,即使数组中的*个元素都是空白。在这种情况下要确定空白,请使用all?
和blank?
,例如。
[ nil, '' ].blank? == false
[ nil, '' ].all? &:blank? == true