Rubyのcase文の基本

Rubyのcase文は、他の多くのプログラミング言語に存在するswitch文に似ています。case文は、一連の条件を評価し、最初に真と評価された条件に対応するコードブロックを実行します。

以下に基本的なcase文の構文を示します。

case 対象の変数
when 条件1
  # 条件1が真の場合に実行されるコード
when 条件2
  # 条件2が真の場合に実行されるコード
else
  # どの条件も真でない場合に実行されるコード
end

例えば、次のようなcase文を考えてみましょう。

grade = 'B'

case grade
when 'A'
  puts 'Excellent!'
when 'B'
  puts 'Good!'
when 'C'
  puts 'You can do better!'
else
  puts 'Unacceptable!'
end

このコードは、gradeの値に基づいて異なるメッセージを出力します。grade'B'なので、'Good!'と出力されます。case文は、複数の条件を効率的に処理するための強力なツールです。それぞれのwhen節は、case文の対象となる変数がその節の条件と一致するかどうかを評価します。最初に一致したwhen節のコードが実行され、その後のwhen節は無視されます。どのwhen節も一致しない場合、else節のコードが実行されます。else節はオプションで、省略することも可能です。else節がなく、どのwhen節も一致しない場合、case文はnilを返します。これがRubyのcase文の基本的な使い方です。次のセクションでは、case文とor演算子の組み合わせについて説明します。

case文とor演算子の組み合わせ

Rubyのcase文は、複数の条件を効率的に評価するための強力なツールです。また、or演算子と組み合わせることで、さらに柔軟な条件分岐を実現することができます。

or演算子は、左側の式が偽(falseまたはnil)の場合に右側の式を評価します。これをcase文と組み合わせることで、複数の値に対応するwhen節を作成することができます。

以下に、case文とor演算子の組み合わせの例を示します。

animal = 'dog'

case animal
when 'cat', 'dog'
  puts 'Pet animal'
when 'lion', 'tiger'
  puts 'Wild animal'
else
  puts 'Unknown animal'
end

このコードでは、animalの値が'cat'または'dog'の場合に'Pet animal'を出力し、'lion'または'tiger'の場合に'Wild animal'を出力します。どの条件も一致しない場合は、'Unknown animal'を出力します。

このように、case文とor演算子を組み合わせることで、一つのwhen節で複数の値を効率的に処理することができます。これは、特定のカテゴリに属する複数の値を一括で処理する際に非常に便利です。

次のセクションでは、Rubyのcase文の応用例について説明します。それでは、次のセクションをお楽しみに!

Rubyのcase文の応用例

Rubyのcase文は、その柔軟性と強力さから、さまざまな応用例があります。ここでは、case文を使用して、オブジェクトのクラスに基づいて動作を変更する例を紹介します。

Rubyでは、case文は===演算子を使用して比較を行います。これは、when節のオブジェクトがcase節のオブジェクトに対して===を呼び出すことを意味します。この特性を利用すると、case文でクラスのチェックを行うことができます。

以下に、オブジェクトのクラスに基づいて動作を変更するcase文の例を示します。

def classify_object(obj)
  case obj
  when String
    "It's a string!"
  when Numeric
    "It's a number!"
  when Array
    "It's an array!"
  else
    "I don't know what this is!"
  end
end

puts classify_object("Hello")  # => "It's a string!"
puts classify_object(42)       # => "It's a number!"
puts classify_object([1, 2, 3]) # => "It's an array!"
puts classify_object({a: 1})    # => "I don't know what this is!"

このコードでは、classify_objectメソッドは引数objのクラスに基づいて異なるメッセージを出力します。case文はobjのクラスをStringNumericArrayのいずれかと比較し、一致する場合は対応するメッセージを返します。どのクラスとも一致しない場合は、"I don't know what this is!"を返します。

このように、Rubyのcase文は、その柔軟性と強力さから、さまざまな応用例があります。次のセクションでは、Rubyのcase文と他の演算子との組み合わせについて説明します。それでは、次のセクションをお楽しみに!

Rubyのcase文と他の演算子

Rubyのcase文は、他の演算子と組み合わせることで、さらに強力な制御構造を作成することができます。ここでは、case文と範囲演算子(..)を組み合わせた例を紹介します。

Rubyの範囲演算子(..)は、連続する一連の値を生成するために使用されます。これをcase文と組み合わせることで、特定の範囲の値に対応するwhen節を作成することができます。

以下に、case文と範囲演算子の組み合わせの例を示します。

score = 85

case score
when 90..100
  puts 'Excellent!'
when 80..89
  puts 'Good!'
when 70..79
  puts 'Average!'
else
  puts 'Needs improvement!'
end

このコードでは、scoreの値が90から100の範囲にある場合に'Excellent!'を出力し、80から89の範囲にある場合に'Good!'を出力し、70から79の範囲にある場合に'Average!'を出力します。どの範囲にも該当しない場合は、'Needs improvement!'を出力します。

このように、Rubyのcase文は、その柔軟性と強力さから、さまざまな応用例があります。それぞれのwhen節は、case文の対象となる変数がその節の条件と一致するかどうかを評価します。最初に一致したwhen節のコードが実行され、その後のwhen節は無視されます。どのwhen節も一致しない場合、else節のコードが実行されます。else節はオプションで、省略することも可能です。else節がなく、どのwhen節も一致しない場合、case文はnilを返します。

以上がRubyのcase文と他の演算子の組み合わせについての説明です。これで、Rubyのcase文についての理解が深まったことでしょう。次回は、さらに別のトピックについて学んでいきましょう。それでは、次回をお楽しみに!

投稿者 hoshino

コメントを残す

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