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
