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
変数の値に基づいて異なるメッセージを出力します。weather
がsunny
の場合、”Let’s go for a picnic!”と出力されます。weather
がrainy
の場合、”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
このコードは、weather
がsunny
またはpartly cloudy
の場合に”Let’s go for a picnic!”と出力し、weather
がcloudy
または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
の値に基づいて異なるメッセージを出力します。fruit
がapple
、banana
、またはcherry
の場合、”This is a common fruit.”と出力されます。fruit
がdurian
または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
文は非常に強力で、多くの異なるシナリオで使用することができます。それぞれのプロジェクトや問題に最適な方法を見つけるために、さまざまな使い方を試してみてください!