두 개의 객체를 배타적으로 처리해야하는데 Ruby에 내장 된 배타적 논리합 연산자 (^
)를 사용할 수 있다고 생각했지만 작동하지 않습니다. 정확히 내 객체 중 하나가 초기화되었는지 테스트하는 데 사용하고 싶었습니다.두 개의 객체를 배제하기
a = Object.new
b = Object.new
a^b # => NoMethodError: undefined method `^' for #<Object:0x007...>
흥미롭게도, 나는 그것을 루비는 본질적으로 두 개체를 XOR하는 것을 허용하지 않는 이상한 생각
a = nil
b = Object.new
a^b # => true
을 할 수 있습니다. 내가 누락 된 또 다른 명령이 있습니까? 아니면이 기능이 구축되지 않았습니까?
(a || b) && !(a && b)
와우, 그렇게하는 것이 현명한 방법입니다. – AlexQueue
@sawa 그러면 '! a &&! b' (또는'! (a || b)')가됩니다. –