我发现自己反复寻找的差异明确的定义nil?
,blank?
以及empty?
在Ruby on Rails的。这是我最近来的:
blank?
对象为假,空或空白字符串。例如""
," "
,nil
,[]
,和{}
都是空白。nil?
对象是NilClass的实例。empty?
对象是特定于类的,并且定义因类而异。如果没有字符,则字符串为空;如果不包含任何项,则数组为空。
是否缺少任何内容,或者可以进行更严格的比较?
:nil?
定义上::Kernel
和覆盖上::NilClass
,而:empty?
分别实施了许多类(本机上::String
,::Array
,::Hash
,和非原生的其他类,如::Set
从STDLIB和::ActiveRecord::Relation
从轨)。所以,:nil?
在所有的子类可用::Object
并且还每类包括::Kernel
由本身,:empty?
必须在你的类实现或包括具体。
[1] pry(main)> [].blank? => true
present?
。这是因为blank?
对于空数组返回true。