用于零或空的惯用Ruby过滤器?

ben*_*izi 18 ruby idioms enumerable

我正在寻找一种更惯用的方法来过滤掉数组中的空元素或空元素.

我有很多形式的方法:

def joined
    [some_method, some_other_method].compact.reject(&:empty?).join(' - ')
end
Run Code Online (Sandbox Code Playgroud)

这将取和的结果,some_method并且some_other_method仅返回非零(compact基本上等于reject(&:nil?))和非空的一个().

在Array或Enumerable中有什么可以一次性获得同样的东西吗?

Ale*_*x D 17

在Rails中,您可以做到reject(&:blank?),或者等效select(&:present?).

如果这不适用于Rails应用程序,并且你做了很多,我建议你定义自己的帮助程序String或者你正在过滤的其他任何东西.

class String
  alias :blank? :empty?
end

class NilClass
  def blank?
    true
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.[ActiveSupport的空白?](http://api.rubyonrails.org/classes/Object.html#method-i-blank-3F)就是我想要的. (2认同)