0
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?

【Ruby】ifとcaseの使い分けについて

Last updated at Posted at 2024-10-08

はじめに

progateでRubyを勉強したのち「ゼロからわかるRuby超入門」を勉強しています。
本書ではifcaseの使い分けについて「3つ以上の分岐の場合はcaseを使う」と記載がありました。
ですがifにもelsifがあるのでcaseを使用しなくても可読性落ちることがないのでは?と思い記事にしてみようと思いました。

caseとは

caseは特定の変数や値に対して、複数の候補の中から一致するものを見つけるために使います。
caseを使うことで、同じ値に対して複数のパターンを簡潔に記述でき、コードが読みやすくなります。
基本構文は以下の通りです

case1.rb
case 変数
when 1
  # 値1と一致した場合に実行されるコード
when 2
  # 値2と一致した場合に実行されるコード
else
  # どれにも一致しない場合に実行されるコード
end

ifとcaseの違いは

ifは、複雑な条件式や比較演算、範囲指定が必要な場合に向いています。
一方caseは、特定の値やパターンに基づいて処理を切り替える場合に向いています。

if文

if文は複雑な条件式や比較演算、範囲指定が必要な場合に向いていると書きましたが具体例を見てみましょう

if.ruby
age = 25

if age < 18
  puts "未成年"
elsif age >= 18 && age <= 65
  puts "成人"
else
  puts "高齢者"
end

この例では、年齢に基づいて「未成年」「成人」「高齢者」に分類しています。if文は、範囲指定や論理演算子(&&など)を使って、条件を柔軟に設定できるので、複雑な条件判断に向いています。

case文

上記同様に具体例を見てみましょう

case2.rb
drink = "カフェラテ"

case drink
when "カフェラテ"
  puts "カフェラテを注文しました"
when "コーヒー"
  puts "コーヒーを注文しました"
when "紅茶"
  puts "紅茶を注文しました"
else
  puts "メニューにない飲み物です"
end

この例では、飲み物の種類に応じて異なる処理を行っています。
case文は、特定の値に基づいた分岐を効率的に表現でき、条件が多い場合でも読みやすいコードになります。

一方でこんな意見もあると思います。「case文でも範囲指定の文書けるでしょ。」
おっしゃる通りです。
では、if文で使用したコードをcase文で書き直してみましょう

case3.rb
age = 25
case age 
when 0...18
    puts "未成年"
when 18..65
    puts "成人"
else
    puts "高齢者"
end

0...18は0以上18未満を表します
18..65は18以上65以下を表します

この場合直観的にifcaseどっちかというとif文のほうがわかりやすいと思います。

まとめ

本日はif文とcase文の違いについて触れてみました。
まとめると
if文...複雑な条件式や比較演算、範囲指定が必要な場合
case文...特定の値やパターンに基づいて処理を切り替える場合

0
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
0
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?