1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Ruby】if → unlessへの書き換え unlessメソッド

Posted at

※初心者向け
※アウトプット練習の為

開発環境
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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?