这是一种糟糕的Ruby处理方式

时间:2010-08-14 07:21:59

标签: ruby

我想修补补丁或扩展可枚举。我也想处理零个案例,我想出了以下测试用例和扩展:

module Enumerable
  def has_elements
    (self) && (self.size > 0)
  end
end

class NilClass
  def has_elements
    false
  end
end

class EnumerableExtensionsTest < ActiveSupport::TestCase

  should "return false for nil" do
    d = nil

    assert_equal(false, d.has_elements)
  end

end

测试通过,但这感觉不对,我想知道是否有更好的方法可以为has_elements调用返回false,或者我该如何处理?

1 个答案:

答案 0 :(得分:0)

ActiveSupport gem已经具备此功能。如果您在Rails项目中,方法.empty?是可用的。否则,您需要包含activesupport gem并在需要此方法的文件中执行以下操作:

require 'active_support/core_ext/object/blank'