我发现自己一再寻找nil?
差异的明确定义nil?
, blank?
, empty?
在 Ruby on Rails 中。这是我最接近的:
blank?
对象是 false,空或空白字符串。例如, ""
, " "
, nil
, []
和{}
为空。
nil?
对象是 NilClass 的实例。
empty?
对象是特定于类的,并且定义因类而异。如果字符串没有字符,则该字符串为空; 如果字符串不包含任何项目,则该字符串为空。
有什么遗漏,或者可以做出更严格的比较吗?
.nil?
可以在任何对象上使用,如果对象为零,则为 true。
.empty?
可用于字符串,数组和散列,并在以下情况下返回 true:
跑.empty?
在 nil 的东西上会抛出一个NoMethodError
。
那是.blank?
来自。它由 Rails 实现,可以在任何对象上运行,也可以像.empty?
一样工作.empty?
在字符串,数组和散列上。
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
我用所有案例制作了这个有用的表格:
blank?
, present?
由 Rails 提供。