case文とは
case文は、他の言語におけるswitch文のような多方向分岐文です。
if文と違って、与えられた一つの値が複数の選択肢の中で一致するものを探す時に便利です。
case 対象のオブジェクト
when 値1
処理
when 値2
処理
・
・
else
処理
end
オブジェクトが数値の例
num = 3
case num
when 0
puts "ogino"
when 1
puts "fujiwara"
when 2
puts "matukawa"
when 3
puts "kakunaka"
else
puts "none"
end
# kakunaka
オブジェクトが文字列の例
member = "fujiwara"
case member
when "ogino"
puts 0
when "fujiwara"
puts 1
when "matukawa"
puts 2
when "kakunaka"
puts 3
else
puts 26
end
# 1
whenに複数指定する
case文では、when文に複数の値や範囲を含めることができます。
number = "5"
case number
when "1","2"
puts "January or February"
when "3","4"
puts "March or April"
when "5","6"
puts "May or June"
else
"none"
end
# May or June
値を指定しない
値を指定せずにcase文を使用することも可能です。
str = "chiba lotte"
case
when str.match(/\d/)
puts '数字が含まれています'
when str.match(/[a-zA-Z]/)
puts '英字が含まれています'
else
puts '数字も英字も含まれていません'
end
# 英字が含まれています
*「\d」は数字、「[]」の中のいずれか一文字が含まれていればよくて、今回は英字全て。
メソッド呼び出しの中でcase文を使用
メソッド呼び出しの中でcase文を使用することができます。
メソッド呼び出しと同様に、case文は常に1つのオブジェクトを返します。
以下の例では、when文の中のputsを省略することができるように、コードを短縮することができます。
str = "26"
puts case
when str.match(/\d/)
'数字が含まれています'
when str.match(/[a-zA-Z]/)
'英字が含まれています'
else
'数字も英字も含まれていません'
end
# 数字が含まれています