Ruby case 複数の条件分岐 スクリプトの書き方

ruby の case文は、「複数の条件」と「それに対応した処理」をまとめて記述します。ruby の if文より、シンプルに記述できて、プログラムの見通しも良くなります。ruby の case文で複数の条件を既述する「書き方」と「判断」をサンプルを使ってまとめます。

スポンサーリンク



ruby – case文による複数の条件判断

ruby – case文の書き方

case文では、式に対する複数の条件を判断することができます。上から順に判定されます。条件を増やしたい時は「when」を追加します。続けて、条件に合致した場合の処理を書きます。条件には、数値または数値範囲、文字列や正規表現を使うことができます。複数の条件をカンマ区切りで指定することもできます。この時、個々の条件はORで判断されます。また、「その他の条件」は、「else」で指定することができます。

ruby – case文の一般的な形式

case 式
  when 条件1
    対応した文
    ...

  when 条件2_1, 条件2_2, ...
    対応した文
    ...

  else
    対応した文
    ...
end

ruby – case文の判断

caseキーワードに指定した式とwhenの条件値は、「===」で比較されます。「===」は「==」と同じような動作をしますが、状況によっては同一クラスか?・範囲内に含まれるか?などの評価を行うことができます。

プログラム

test_case1.rb
#! /usr/bin/ruby

puts "input A? ABC? B?:"
case (STDIN.gets).chomp
when "A"
  puts "catch A"
when "ABC"
  puts "catch ABC"
when /^B/
  puts "catch B..."
else
  puts "other"
end
test_case2.rb
#! /usr/bin/ruby

puts "input 1? 2? 3?:"
data = case (STDIN.gets).chomp.to_i
       when 1, 2
         "catch 1 or 2"
       when 3..5
         "catch 3..5"
       else
         "other"
       end

puts data

プログラム実行

test_case1
$ ruby ./test_case1.rb
input A? ABC? B?: <-Aを入力
catch A
$ ruby ./test_case1.rb
input A? ABC? B?: <-ABCを入力
catch ABC
$ ruby ./test_case1.rb
input A? ABC? B?: <-Bigを入力
catch B...
test_case2
$ ruby ./test_case2.rb
puts "input 1? 2? 3?:" <-1を入力
catch 1 or 2
$ ruby ./test_case2.rb
puts "input 1? 2? 3?:" <-2を入力
catch 1 or 2
$ ruby ./test_case2.rb
puts "input 1? 2? 3?:" <-3を入力
catch 3..5

プログラムについて

test_case.rbでは、ruby の caseを使った複数の条件判断を、数種類ためしてみました。標準入出力STDIN.getsを使って、キーボードから入力された文字を判断します。文字が「A」または「ABC」の文字列とき、それぞれの処理として記述された「catch A」「catch ABC」を出力します。test_case2.cでは、処理は大体同じですが、条件を複数羅列したり、範囲を評価したりしました。また、caseの戻り値を取得することで、各条件でのメッセージ出力を共通処理にしました。

rubyの条件分岐処理には「if文」もありますが、複数の分岐条件が想定されている場合は「case」を使ったほうが、シンプルに記述することができます。

Ruby オススメの1冊 – 入門編 –

Ruby入門書の超ロングセラー!

いちばん売れているRuby入門書の決定版。

初版から14年。改訂とともに変化しながら、ずっと読まれ続けている定番商品です。
第5版では、最新のバージョンに対応。

プログラミング初心者でも読み解けるように、
チュートリアル、基礎、クラス、実践とテーマを切り分けて、平易に解説。
Rubyの基礎から応用までがわかる一冊。

Amazon 商品の説明 より
スポンサーリンク