有一个Ruby字符串#black?方法?

前端之家收集整理的这篇文章主要介绍了有一个Ruby字符串#black?方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
串#空白?非常有用,但存在于Rails中,而不是 Ruby中.

Ruby中是否有类似的东西来代替:

str.nil? || str.empty?

解决方法

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?实施应该比前一个更有效:

https://github.com/rails/rails/blob/2a371368c91789a4d689d6a84eb20b238c37678a/activesupport/lib/active_support/core_ext/object/blank.rb#L101

猜你在找的Ruby相关文章