2010-08-10 7 views

답변

18

표현식이 모두 true인지 아니면 둘 다 false인지 테스트하려고합니다. 시도해보십시오.

if (self.expense.nil? == self.income.nil?) 

두 항목이 모두 true인지 아니면 둘 다 false인지는 상관 없습니다. 당신은을 사용하고 있기 때문에 당신이 좋아하는 코드를 단축 할 수 전무를 확인하는 경우

+0

이런 젠장, 나는 루비가 XOR 연산자를 가지고 있다는 것을 몰랐다. 그것은 내가 지루한 구문 장을 건너 뛰는 마지막 시간입니다! ;-) –

+0

@Tom Morris : 실제로 저는 xor가 여기에도 필요 없다고 생각합니다. 내 업데이트를 확인하십시오! –

+0

예. 그 질문의 문맥에서 더 낫습니다. 하지만 XOR 연산자 (^)에 대해 배우는 것에 대해 여전히 감사드립니다. –

0

당신은 논리에도 불구하고 조건

그렇게 (!self.expense.nil? && !self.income.nil?)가 될 경우 !(self.expense.nil? || self.income.nil?)

1

하반기 드 모르 강의 법칙을 사용할 수 있습니다 그래서 :

if ((expense && income) || (!expense && !income)) 
    puts "test" 
end 

제가 틀렸다면 저를 교정하십시오.

+1

변수에 가능한 값에 따라 * 발생할 수있는 문제는 변수 중 하나가 '거짓'인 경우입니다. 그런 다음 원본 if-statment가 귀하의 결과와 다른 결과를 반환합니다. 그러나'false'가 사용 된 변수 중 하나에 대해 가능한 값인 경우에만 고려하면됩니다. – Ragmaanir

+0

좋은 지적 ... 비즈니스 로직에 따라 다르긴하지만 여전히 잘 작동 할 수 있습니다. – tybro0103