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
のクラスをString
、Numeric
、Array
のいずれかと比較し、一致する場合は対応するメッセージを返します。どのクラスとも一致しない場合は、"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
文についての理解が深まったことでしょう。次回は、さらに別のトピックについて学んでいきましょう。それでは、次回をお楽しみに!