はじめに
progateでRuby
を勉強したのち「ゼロからわかるRuby超入門」を勉強しています。
本書ではif
とcase
の使い分けについて「3つ以上の分岐の場合はcase
を使う」と記載がありました。
ですがif
にもelsif
があるのでcase
を使用しなくても可読性落ちることがないのでは?と思い記事にしてみようと思いました。
caseとは
case
は特定の変数や値に対して、複数の候補の中から一致するものを見つけるために使います。
case
を使うことで、同じ値に対して複数のパターンを簡潔に記述でき、コードが読みやすくなります。
基本構文は以下の通りです
case 変数
when 値1
# 値1と一致した場合に実行されるコード
when 値2
# 値2と一致した場合に実行されるコード
else
# どれにも一致しない場合に実行されるコード
end
ifとcaseの違いは
if
は、複雑な条件式や比較演算、範囲指定が必要な場合に向いています。
一方case
は、特定の値やパターンに基づいて処理を切り替える場合に向いています。
if文
if文は複雑な条件式や比較演算、範囲指定が必要な場合に向いていると書きましたが具体例を見てみましょう
age = 25
if age < 18
puts "未成年"
elsif age >= 18 && age <= 65
puts "成人"
else
puts "高齢者"
end
この例では、年齢に基づいて「未成年」「成人」「高齢者」に分類しています。if
文は、範囲指定や論理演算子(&&
など)を使って、条件を柔軟に設定できるので、複雑な条件判断に向いています。
case文
上記同様に具体例を見てみましょう
drink = "カフェラテ"
case drink
when "カフェラテ"
puts "カフェラテを注文しました"
when "コーヒー"
puts "コーヒーを注文しました"
when "紅茶"
puts "紅茶を注文しました"
else
puts "メニューにない飲み物です"
end
この例では、飲み物の種類に応じて異なる処理を行っています。
case
文は、特定の値に基づいた分岐を効率的に表現でき、条件が多い場合でも読みやすいコードになります。
一方でこんな意見もあると思います。「case
文でも範囲指定の文書けるでしょ。」
おっしゃる通りです。
では、if
文で使用したコードをcase文で書き直してみましょう
age = 25
case age
when 0...18
puts "未成年"
when 18..65
puts "成人"
else
puts "高齢者"
end
0...18
は0以上18未満を表します
18..65
は18以上65以下を表します
この場合直観的にif
とcase
どっちかというとif
文のほうがわかりやすいと思います。
まとめ
本日はif
文とcase
文の違いについて触れてみました。
まとめると
if
文...複雑な条件式や比較演算、範囲指定が必要な場合
case
文...特定の値やパターンに基づいて処理を切り替える場合