解决方法
AFAIK在普通的Ruby中没有这样的东西.您可以像这样创建自己的:
- class NilClass
- def blank?
- true
- end
- end
- class String
- def blank?
- self.strip.empty?
- end
- end
这适用于nil.blank?和a_string.blank?你可以为真/假和一般对象扩展这个(就像rails一样):
- class FalseClass
- def blank?
- true
- end
- end
- class TrueClass
- def blank?
- false
- end
- end
- class Object
- def blank?
- respond_to?(:empty?) ? empty? : !self
- end
- end
参考文献:
https://github.com/rails/rails/blob/2a371368c91789a4d689d6a84eb20b238c37678a/activesupport/lib/active_support/core_ext/object/blank.rb#L57
https://github.com/rails/rails/blob/2a371368c91789a4d689d6a84eb20b238c37678a/activesupport/lib/active_support/core_ext/object/blank.rb#L67
https://github.com/rails/rails/blob/2a371368c91789a4d689d6a84eb20b238c37678a/activesupport/lib/active_support/core_ext/object/blank.rb#L14
https://github.com/rails/rails/blob/2a371368c91789a4d689d6a84eb20b238c37678a/activesupport/lib/active_support/core_ext/object/blank.rb#L47
这是String.blank?实施应该比前一个更有效: