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のさまざまな使用方法を詳しく見ていきましょう。

投稿者 hoshino

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です