[我发现自己反复寻找Ruby on Rails中nil?
,blank?
和empty?
的区别的清晰定义。这是我最近来过的:
blank?
对象为false,空或空白字符串。例如,""
," "
,nil
,[]
和{}
为空白。
nil?
对象是NilClass的实例。
empty?
对象是特定于类的,并且定义因类而异。如果字符串不包含任何字符,则为空;如果不包含任何项目,则该数组为空。
是否缺少任何内容,或者可以进行更严格的比较?
[.nil?
可以在任何对象上使用,如果对象为nil,则为true。
.empty?
可用于字符串,数组和哈希,如果满足以下条件,则返回true:
在零值上运行.empty?
将抛出NoMethodError
。
即.blank?
的输入。它是implemented by Rails,将对任何对象进行操作,并且像.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 also provides .present?
,返回.blank?
的否定。
数组陷阱:blank?
将返回false
,即使数组的所有元素为空。要确定这种情况下的空白,请使用all?
和blank?
,例如:
[ nil, '' ].blank? == false
[ nil, '' ].all? &:blank? == true
我在所有情况下都制作了这个有用的表:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9vWHVoSi5wbmcifQ==” alt =“在此处输入图像描述”>
[blank?
,present?
由Rails提供。
快速提示:!obj.blank? == obj.present?
在某些表达式中可以方便/轻松地进入眼睛
一个区别是.nil?
和.empty?
是由编程语言Ruby提供的方法,而.blank?
是Web开发框架Rails的added。
[一种特殊情况是当尝试评估布尔值是否为零时:
false.present? == false
false.blank? == true
false.nil? == false
在这种情况下,建议使用.nil?
关于any?
建议的一点说明:他是对的,它[[通常等同于!empty?
。但是,any?
会将true
返回到仅包含空格的字符串(ala " "
)。
any?
,通常为!empty?
。在Rails中,我通常会在if something
或unless something
语句的末尾检查是否存在某些内容,然后在需要的地方使用blank?
,因为它似乎无处不在。 nil?
是可以在所有对象上调用的标准Ruby方法,如果对象是true
,则返回nil
:]b = nil
b.nil? # => true
[empty?
是一个标准的Ruby方法,可以在某些对象(例如字符串,数组和哈希)上调用,如果这些对象不包含任何元素,则返回true
:
a = [] a.empty? # => true b = ["2","4"] b.empty? # => false
[empty?
不能在nil
对象上调用。[
blank?
是一种Rails方法,可以在nil
对象以及空对象上调用。
我想在Ruby On Rails中添加,最好使用obj.blank?
或obj.present?
而不是obj.nil?
或obj.empty?
。
[obj.blank?
处理所有类型nil
,''
,[]
,{}
,如果值不可用则返回true
,如果值在任何类型的对象上均可用则返回false
。] >
exists?
方法可用于检查数据库中是否存在数据。它返回布尔值true
或false
。 nil?
可以在任何对象上使用。它确定对象是否具有任何值,包括“空白”值。