unless文に初めて触れたので、if文との違いをまとめようと思います。
if文
if 条件式
条件式が真である時の処理
else
条件式が偽である時の処理
end
記述した条件を満たしているか否かで処理を変えることができます。
<記述例>
if age >= 20
puts "成人しています"
else
puts "未成年です"
end
unless文
unless 条件式
条件式が偽である時の処理
else
条件式が真である時の処理
end
if文と同じ構造で記述できますが、真偽の判定が逆転します。
また、if文と違いelseif
を使って条件式を複数記述することができません。
<記述例>
unless age >= 20
puts "未成年です"
else
puts "成人しています"
unless文の実用例
条件式自体が何かの処理を含んでいる場合、unlessにすると、
その処理が失敗した場合の記述だけで済むので便利です。
<記述例>
unless @user.save
render(user/edit)
end
@user.save
の処理が失敗した時のみ該当のページを表示させる処理が書けました。
ちなみにif文で同じ内容を記述した場合else
が必要になります。
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