【Ruby】case文について詳しく解説します

Ruby

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

# 数字が含まれています
タイトルとURLをコピーしました