Rubyのcase whenの基本

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

基本的な構文は次のようになります:

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

例えば、次のようなコードがあります:

weather = "sunny"

case weather
when "sunny"
  puts "Let's go for a picnic!"
when "rainy"
  puts "Better stay home and read a book."
else
  puts "Hmm, I'm not sure what to do."
end

このコードは、weather変数の値に基づいて異なるメッセージを出力します。weathersunnyの場合、”Let’s go for a picnic!”と出力されます。weatherrainyの場合、”Better stay home and read a book.”と出力されます。それ以外の場合、”Hmm, I’m not sure what to do.”と出力されます。

これがRubyのcase whenの基本的な使い方です。次のセクションでは、複数の条件を指定する方法について説明します。それでは、次に進みましょう!

複数の条件を指定する方法

Rubyのcase when文では、一つのwhen節に複数の条件を指定することができます。これは、同じコードを複数の条件で実行したい場合に便利です。

複数の条件を指定するには、whenの後に条件をカンマで区切って列挙します。例えば、次のようなコードがあります:

weather = "cloudy"

case weather
when "sunny", "partly cloudy"
  puts "Let's go for a picnic!"
when "cloudy", "rainy"
  puts "Better stay home and read a book."
else
  puts "Hmm, I'm not sure what to do."
end

このコードは、weathersunnyまたはpartly cloudyの場合に”Let’s go for a picnic!”と出力し、weathercloudyまたはrainyの場合に”Better stay home and read a book.”と出力します。それ以外の場合、”Hmm, I’m not sure what to do.”と出力されます。

このように、Rubyのcase when文では、一つのwhen節に複数の条件を指定することができます。次のセクションでは、値の範囲を指定する方法について説明します。それでは、次に進みましょう!

値の範囲を指定する方法

Rubyのcase when文では、値の範囲を指定することも可能です。これは、ある値が特定の範囲内にあるかどうかを判断したい場合に便利です。

値の範囲を指定するには、範囲オブジェクト(Range)を使用します。範囲オブジェクトは、2つの値(開始値と終了値)を指定して作成します。開始値と終了値は、2つのドット(..)または3つのドット(...)で区切ります。2つのドットを使用すると、終了値が範囲に含まれます。3つのドットを使用すると、終了値が範囲に含まれません。

例えば、次のようなコードがあります:

temperature = 25

case temperature
when -Float::INFINITY..0
  puts "It's freezing!"
when 0..15
  puts "It's cold."
when 15..25
  puts "It's comfortable."
when 25..Float::INFINITY
  puts "It's hot!"
end

このコードは、temperatureの値に基づいて異なるメッセージを出力します。temperatureが0以下の場合、”It’s freezing!”と出力されます。temperatureが0から15の範囲の場合、”It’s cold.”と出力されます。temperatureが15から25の範囲の場合、”It’s comfortable.”と出力されます。temperatureが25以上の場合、”It’s hot!”と出力されます。

これがRubyのcase whenで値の範囲を指定する方法です。次のセクションでは、配列を指定する方法について説明します。それでは、次に進みましょう!

配列を指定する方法

Rubyのcase when文では、配列を指定することも可能です。これは、ある値が特定の集合に含まれているかどうかを判断したい場合に便利です。

配列を指定するには、whenの後に配列を指定します。例えば、次のようなコードがあります:

fruit = "apple"

case fruit
when ["apple", "banana", "cherry"]
  puts "This is a common fruit."
when ["durian", "rambutan"]
  puts "This is a tropical fruit."
else
  puts "I don't know this fruit."
end

このコードは、fruitの値に基づいて異なるメッセージを出力します。fruitapplebanana、またはcherryの場合、”This is a common fruit.”と出力されます。fruitdurianまたはrambutanの場合、”This is a tropical fruit.”と出力されます。それ以外の場合、”I don’t know this fruit.”と出力されます。

これがRubyのcase whenで配列を指定する方法です。次のセクションでは、Ruby case whenの応用例について説明します。それでは、次に進みましょう!

Ruby case whenの応用例

Rubyのcase when文は、その柔軟性と強力さから、さまざまな応用例があります。ここでは、その一部を紹介します。

オブジェクトの型による分岐

Rubyは動的型付け言語であるため、変数の型は実行時に決定されます。したがって、case when文を使用して、オブジェクトの型に基づいて異なる動作をするコードを書くことができます。

def describe(obj)
  case obj
  when String
    "This is a string."
  when Numeric
    "This is a number."
  when Array
    "This is an array."
  else
    "I don't know what this is."
  end
end

puts describe("Hello")  # => "This is a string."
puts describe(42)       # => "This is a number."
puts describe([1, 2, 3]) # => "This is an array."

正規表現によるマッチング

case when文は、正規表現を使用して文字列をマッチングすることもできます。これは、文字列が特定のパターンに一致するかどうかを判断したい場合に便利です。

def analyze_url(url)
  case url
  when /^https:/
    "This is a secure URL."
  when /^http:/
    "This is a non-secure URL."
  when /\.com$/
    "This is a .com domain."
  else
    "I don't know what this URL is."
  end
end

puts analyze_url("https://example.com")  # => "This is a secure URL."
puts analyze_url("http://example.com")   # => "This is a non-secure URL."
puts analyze_url("http://example.net")   # => "This is a non-secure URL."

これらの例からわかるように、Rubyのcase when文は非常に強力で、多くの異なるシナリオで使用することができます。それぞれのプロジェクトや問題に最適な方法を見つけるために、さまざまな使い方を試してみてください!

投稿者 hoshino

コメントを残す

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