Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Rubyの基本記述の仕方〜その11〜 if文とunless文

unless文に初めて触れたので、if文との違いをまとめようと思います。

if文

sample.rb
if 条件式
 条件式が真である時の処理
else
 条件式が偽である時の処理
end

記述した条件を満たしているか否かで処理を変えることができます。

<記述例>

sample.rb
if age >= 20
 puts "成人しています"
else
 puts "未成年です"
end

unless文

sample.rb
unless 条件式
 条件式が偽である時の処理
else
 条件式が真である時の処理
end

if文と同じ構造で記述できますが、真偽の判定が逆転します。
また、if文と違いelseifを使って条件式を複数記述することができません。

<記述例>

sample.rb
unless age >= 20
 puts "未成年です"
else
 puts "成人しています"

unless文の実用例

条件式自体が何かの処理を含んでいる場合、unlessにすると、
その処理が失敗した場合の記述だけで済むので便利です。

<記述例>

sample.rb
unless @user.save
 render(user/edit)
end

@user.saveの処理が失敗した時のみ該当のページを表示させる処理が書けました。
ちなみにif文で同じ内容を記述した場合elseが必要になります。

sample.rb
if @user.save
else
 render(user/edit)
end

当初、if @user.saveの記述で「もし、ユーザーの保存が成功すれば」という意味に受け取れず
条件式と処理が同じ箇所で書かれている所に非常に違和感がありました。
しかし、慣れてくると書く量が少なくて済むのでとても便利です。

今日はこのあたりで失礼します。

参考サイト

Let's プログラミング初心者の方でも分かりやすいサイト unless文
https://www.google.co.jp/search?ei=AXbWW6bcM4vqwQO945f4Dg&q=elseif&oq=elseif&gs_l=psy-ab.3..0i67k1j0l7.2207.5133.0.5291.12.9.0.3.3.0.105.664.7j1.9.0....0...1c.1.64.psy-ab..0.11.670.0..0i5i10i30k1j0i10k1j0i131k1j0i4k1.71.ein1xWrORFA

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?