問題
次のif文をunlessというメソッドを用いて書き換えてください。
if a + b > 0
puts "計算結果は0より大きいです"
end
💡ヒント💡
unless
unlessとはifとは逆で、条件式がfalseの場合に処理が実行されます。
ifの場合
if 条件式
条件式がtrueの時に実行する処理
else
条件式がfalseの時に実行する処理
end
unlessの場合
unless 条件式
条件式がfalseの時に実行する処理
else
条件式がtrueの時に実行する処理
end
模範解答
模範解答
unless a + b <= 0
puts "計算結果は0より大きいです"
end
【解説】
a + b > 0という式は、「a + b が0より大きいとき」にtrueとなります。
その結果endまでの処理が実行され文字列が表示されます。
if a + b > 0
puts "計算結果は0より大きいです"
end
ifをunlessに変更
unless a + b > 0
puts "計算結果は0より大きいです"
end
この場合、「a + b が0より大きい」という条件式がfalseの時に文字列が表示されます。
つまり、「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の際に文字列を表示させないようにするには「a + b が0以上のとき」にfalseになる条件式に変更します。
unless a + b <= 0
puts "計算結果は0より大きいです"
end
逆を考えるところまでは正解でしたが、演算子(<=)が出ませんでした。
改めて解説を理解しながら学ぶと発見があります。