我发现自己反复寻找的差异明确的定义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。