Лучший способ написать, если условие - PullRequest
3 голосов
/ 10 августа 2010

Есть ли лучший способ написать это условие?

if (self.expense.nil? && self.income.nil?) || (!self.expense.nil? && !self.income.nil?)
  puts "test"
end

Ответы [ 3 ]

18 голосов
/ 10 августа 2010

Вы проверяете, являются ли выражения как истинными, так и ложными. Попробуйте это:

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

Вам все равно, являются ли они оба истинными или ложными, просто они одинаковы.

1 голос
/ 10 августа 2010

Несмотря на логику, поскольку вы используете if для проверки на ноль, вы можете сократить код следующим образом:

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

Исправьте меня, если я ошибаюсь.

0 голосов
/ 10 августа 2010

Вы можете использовать закон Деморгана для второй половины условия if

так (!self.expense.nil? && !self.income.nil?) становится !(self.expense.nil? || self.income.nil?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...