如何将“if”语句重构为“除非”语句?

时间:2011-12-29 09:14:16

标签: ruby

有没有办法将此重构为unless语句?

a = false
b = true

if !a or !b
  puts "hello world"
end

这似乎不等同

unless a or b
  puts "hello world"
end

3 个答案:

答案 0 :(得分:5)

根据De Morgan's laws ...

否定您的情况
unless (a and b) 

答案 1 :(得分:3)

应该是:

puts "hello" unless a and b

或者

unless a and b
   puts "hello"
end

答案 2 :(得分:0)

由于unlessif的否定,您需要否定整个条件表达式(您可以使用De Morgan’s laws来简化它):

!(!a or !b) ≡ !!a and !!b ≡ a and b

所以:

unless a or b
  puts "hello world"
end