Rubyと’case when’の基本
Rubyのcase when
構文は、他のプログラミング言語でよく見られるswitch case
構文に似ています。この構文は、一連の条件を順番に評価し、最初に真と評価された条件に対応するコードブロックを実行します。
基本的なcase when
の書き方は以下の通りです。
case 対象の変数
when 条件1
# 条件1が真のときに実行するコード
when 条件2
# 条件2が真のときに実行するコード
else
# どの条件も真でないときに実行するコード
end
例えば、ある数値が正、負、またはゼロであるかを判断するコードは次のようになります。
num = 10
case
when num > 0
puts "#{num} is positive."
when num < 0
puts "#{num} is negative."
else
puts "#{num} is zero."
end
このコードは、num
が正の数であれば “10 is positive.”、負の数であれば “10 is negative.”、ゼロであれば “10 is zero.” を出力します。
このように、Rubyのcase when
構文は複数の条件を効率的に処理するための強力なツールです。次のセクションでは、case when
のさまざまな使用方法を詳しく見ていきましょう。
‘case when’の基本的な書き方
Rubyのcase when
構文は、一連の条件を順番に評価し、最初に真と評価された条件に対応するコードブロックを実行します。基本的な書き方は以下の通りです。
case 対象の変数
when 条件1
# 条件1が真のときに実行するコード
when 条件2
# 条件2が真のときに実行するコード
else
# どの条件も真でないときに実行するコード
end
この構文は、if elsif else end
構文と同じように動作しますが、case when
構文の方が読みやすく、複数の条件を扱う際には特に便利です。
例えば、ある数値がどの範囲にあるかを判断するコードは次のようになります。
score = 85
case score
when 0..59
puts "不合格"
when 60..69
puts "合格"
when 70..79
puts "良好"
when 80..100
puts "優秀"
else
puts "無効なスコア"
end
このコードは、score
が0から59の範囲であれば “不合格”、60から69の範囲であれば “合格”、70から79の範囲であれば “良好”、80から100の範囲であれば “優秀” を出力します。それ以外の値であれば “無効なスコア” を出力します。
このように、Rubyのcase when
構文は、複数の条件を効率的に処理するための強力なツールです。次のセクションでは、case when
のさまざまな使用方法を詳しく見ていきましょう。
‘case when’で複数の値を指定する方法
Rubyのcase when
構文では、一つのwhen
節で複数の値を指定することができます。これは、同じコードを複数の条件で実行したい場合に非常に便利です。
複数の値を指定するには、when
節の後にカンマで区切って値を列挙します。以下に具体的な例を示します。
fruit = "apple"
case fruit
when "apple", "orange", "banana"
puts "#{fruit} is a fruit."
when "cabbage", "spinach", "kale"
puts "#{fruit} is a vegetable."
else
puts "I don't know what #{fruit} is."
end
このコードは、fruit
が “apple”、”orange”、”banana” のいずれかであれば “fruit
is a fruit.” を出力します。fruit
が “cabbage”、”spinach”、”kale” のいずれかであれば “fruit
is a vegetable.” を出力します。それ以外の値であれば “I don’t know what fruit
is.” を出力します。
このように、case when
構文を使うと、複数の値に対して同じコードを効率的に実行することができます。次のセクションでは、case when
のさまざまな使用方法を詳しく見ていきましょう。
‘case when’で値の範囲を指定する方法
Rubyのcase when
構文では、when
節で値の範囲を指定することができます。これは、ある値が特定の範囲に含まれるかどうかを判断する際に非常に便利です。
値の範囲を指定するには、範囲オブジェクト(Range
)を使用します。範囲オブジェクトは、2つの値(始点と終点)とそれらの間のすべての値を表現します。範囲オブジェクトは、..
または...
を使用して作成します。..
は終点を含み、...
は終点を除外します。
以下に具体的な例を示します。
score = 85
case score
when 0..59
puts "不合格"
when 60..69
puts "合格"
when 70..79
puts "良好"
when 80..100
puts "優秀"
else
puts "無効なスコア"
end
このコードは、score
が0から59の範囲であれば “不合格”、60から69の範囲であれば “合格”、70から79の範囲であれば “良好”、80から100の範囲であれば “優秀” を出力します。それ以外の値であれば “無効なスコア” を出力します。
このように、case when
構文を使うと、値の範囲に基づいて条件を指定することができます。次のセクションでは、case when
のさまざまな使用方法を詳しく見ていきましょう。
‘case when’で配列を指定する方法
Rubyのcase when
構文では、when
節で配列を指定することができます。これは、ある値が特定の集合に含まれるかどうかを判断する際に非常に便利です。
配列を指定するには、when
節の後に配列を記述します。以下に具体的な例を示します。
fruit = "apple"
case fruit
when ["apple", "orange", "banana"]
puts "#{fruit} is a fruit."
when ["cabbage", "spinach", "kale"]
puts "#{fruit} is a vegetable."
else
puts "I don't know what #{fruit} is."
end
このコードは、fruit
が “apple”、”orange”、”banana” のいずれかであれば “fruit
is a fruit.” を出力します。fruit
が “cabbage”、”spinach”、”kale” のいずれかであれば “fruit
is a vegetable.” を出力します。それ以外の値であれば “I don’t know what fruit
is.” を出力します。
このように、case when
構文を使うと、配列に基づいて条件を指定することができます。次のセクションでは、case when
のさまざまな使用方法を詳しく見ていきましょう。
‘case when’の応用例とベストプラクティス
Rubyのcase when
構文は、その柔軟性と強力さから、さまざまな応用例があります。以下に、その一部を紹介します。
クラスによる分岐
Rubyでは、case when
構文を使ってオブジェクトのクラスに基づいて処理を分岐することができます。これは、異なるクラスのオブジェクトを一括して処理する際に便利です。
def classify(obj)
case obj
when String
"It's a string."
when Array
"It's an array."
when Hash
"It's a hash."
else
"I don't know what it is."
end
end
正規表現による分岐
case when
構文は、正規表現と組み合わせて使用することもできます。これは、文字列のパターンマッチングを行う際に非常に便利です。
def analyze_string(str)
case str
when /\A\d+\z/
"It's a number."
when /\A[A-Za-z]+\z/
"It's a word."
else
"I don't know what it is."
end
end
ベストプラクティス
case when
構文を使用する際のベストプラクティスは以下の通りです。
case when
構文は、複数の条件を順番に評価するため、条件の順序が重要です。最初に真と評価された条件のコードブロックが実行されます。したがって、最も具体的な条件を最初に、最も一般的な条件を最後に配置することを推奨します。else
節はオプションですが、全てのwhen
節が偽と評価された場合のデフォルトの動作を定義するために使用します。可能な限りelse
節を含めることを推奨します。case when
構文は、if elsif else end
構文と同じように動作しますが、case when
構文の方が読みやすく、複数の条件を扱う際には特に便利です。しかし、単純な条件分岐ではif else end
構文の方が適しています。
以上が、Rubyのcase when
構文の応用例とベストプラクティスです。この構文を理解し、適切に使用することで、Rubyプログラミングの効率と可読性を向上させることができます。次のセクションでは、case when
のさまざまな使用方法を詳しく見ていきましょう。