2
나는 원숭이 패치를 원하거나 열거 할 수 있습니다. 나뿐만 아니라 경우 nil을 처리하는 나는 다음과 같은 테스트 케이스 및 확장과 함께 올라와있다 :이 루비에서 처리하는 나쁜 방법입니다
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
시험 패스 그러나 이것은 잘못된 느낌과 false를 반환하는 더 나은 방법이 있는지 궁금 해서요 has_elements를 호출하거나 어떻게 처리해야합니까?
먼저 열거 할 #의 has_elements' '내부 인 경우를'self'는 할 수 없다' nil'이므로 체크 할 필요가 없습니다. 'has_elements'를'not empty? '로 정의 할 수 있습니다. 둘째로 모든 열거 형이'size' 메소드를 갖는 것은 아닙니다. 마지막으로'? '를 사용하여 부울 값을 반환하는 메서드가 루비의 규칙입니다. 넷째, 이것을 처리하는 가장 좋은 방법은'NilClass'를 만지지 않고 단순히 열거 형을 반환하는 모든 메서드가 결코 nil을 반환하지 않는지 확인하는 것입니다. – sepp2k
ActiveSupport (레일스의 일부)에서'Object # blank? '에 대해 알고 있습니까? –