こちらの続きとして書きます。
条件分岐処理
ifからunlessに書き換える例を3つ挙げてみました。
ifからunlessに書き換える例1
if 100 == 10
puts "同じ数字です"
else
puts "違う数字です"
end
上記if文をunless文で書き換えると次のようになります。
unless 100 == 10
puts "違う数字です"
else
puts "同じ数字です"
end
ifからunlessに書き換える例2
if 100 + 10 > 0
puts "0より大きい数字です"
else
puts "0より小さい数字です"
end
上記if文をunless文で書き換えると次のようになります。
unless 100 + 10 <= 0
puts "0より大きい数字です"
else
puts "0より小さい数字です"
end
ifからunlessに書き換える例3
if a + b > 0
puts "計算結果は0より大きいです"
end
上記if文をunless文で書き換えると次のようになります。
unless a + b <= 0
puts "計算結果は0より大きいです"
end
「a + b が0より大きい」という条件がfalseだった場合、「計算結果は0より大きいです」と文字列が表示されます。
つまり、「a + b が0より大きくないとき」に文字列が表示されるということです。
では、下記のように書くと、a + bの計算結果が0だった場合どうなるでしょう?
unless a + b < 0
puts "計算結果は0より大きいです"
end
これは、「a + b が0より小さい」という条件式がfalseのとき、文字列が表示されます。
つまり「a + b が0より小さくないとき」に文字列が表示されます。
a + bが0だった場合でも、「a + b が0より小さい」という条件式がfalseとなってしまい、文字列が表示されます。
a + bが0以上のときにfalseになる条件式に変更しないといけません。
そのため、 <= を使用します。