有没有更好的方法来写这个条件?
if (self.expense.nil? && self.income.nil?) || (!self.expense.nil? && !self.income.nil?)
puts "test"
end
答案 0 :(得分:18)
您正在测试表达式是否为true或两者都为false。试试这个:
if (self.expense.nil? == self.income.nil?)
你不关心它们是真的还是假的,只是它们是相同的。
答案 1 :(得分:1)
尽管有逻辑,因为你使用if来检查nil,你可以像这样缩短代码:
if ((expense && income) || (!expense && !income))
puts "test"
end
如果我错了,请纠正我。
答案 2 :(得分:0)
您可以在if条件的后半部分使用Demorgan定律
因此(!self.expense.nil? && !self.income.nil?)
变为!(self.expense.nil? || self.income.nil?)