※初心者向け
※アウトプット練習の為
開発環境
rails 6.1.4.1
ruby 2.6.5
##問題内容##
次の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