Ruby on Rails中nil v。empty v。blank的简要解释
我发现自己一直在寻找一个清晰的nil?
差异定义nil?
, blank?
,并且是empty?
在Ruby on Rails中。 这是我最近来的:
blank?
对象是假的,空的或空白字符串。 例如, ""
, " "
, nil
, []
和{}
为空。
nil?
对象是NilClass的实例。
empty?
对象是特定于类的,并且定义因类而异。 如果没有字符,则字符串为空;如果数组不包含任何项目,则该数组为空。
有什么缺失或可以进行更紧密的比较?
.nil?
可用于任何对象,如果对象为零,则为true。
.empty?
可用于字符串,数组和散列,并在以下情况下返回true:
运行.empty?
在零的东西上会抛出一个NoMethodError
。
那是.blank?
它是通过Rails实现的,并且可以在任何对象上运行,并且像.empty?
一样工作.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?
。
数组陷阱: blank?
即使数组的所有元素都为空,也会返回false
。 要确定这种情况下的空白,请使用all?
blank?
, 例如:
[ nil, '' ].blank? == false
[ nil, '' ].all? &:blank? == true
我用所有情况制作了这个有用的表格:
只要扩展朱利安的桌子:
Ref:empty?blank?nil?傻傻分不清楚
链接地址: http://www.djcxy.com/p/4383.html上一篇: A concise explanation of nil v. empty v. blank in Ruby on Rails