Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

Ruby条件分岐case - Silver/Gold試験対策

case式は

whenのオブジェクト === caseのオブジェクト という形式で真偽判定される。 したがって、whenのオブジェクトによって振る舞いが異なる

klass = String
pr = ->(s){ s }
range = 1..5
r = /^\d+$/

case "12345"
when r  # 正規表現とのマッチ
  puts "正規表現にマッチしました"
else
  puts "正規表現にマッチしませんでした"
end

case "hoge"
when String # 同一クラスかどうか
  puts "クラスがおなじです"
end

case 1
when range # Rangeオブジェクトの範囲内か
  puts "範囲内です"
end

case "fuga" # "fuga"を引数としたProcオブジェクトの実行結果に一致します
when pr
  puts "procの実行結果と一致します"
end

whenにいくつかカンマ区切りで並んでいる場合はどれかに一致していれば真

case 3
when "4","5","3",3
  p "一致しました"
end