よくこんがらかるunlessと&&,||の組み合わせについて見ていきます。これは表で見ると理解しやすいでしょうか。

unless A && B

unless A && B
  p "Hello, World!"
end
  A && B unless A && B
A=true,B=true true false
A=true,B=false false true
A=false,B=true false true
A=false,B=false false true

 表から分かる通り、A=true,B=trueのときだけ「unless A && B」がfalseとなるので、A=true,B=trueのときだけunless内の処理が実行されない。

unless A || B

unless A || B
  p "Hello, World!"
end
   A || B unless A || B
A=true,B=true true false
A=true,B=false true false
A=false,B=true true false
A=false,B=false false true

 表から分かる通り、A=false,B=falseのときだけ「unless A || B」がtrueとなるので、A=false,B=falseのときだけunless内の処理が実行される。