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冊 – 入門編 –

[amazonjs asin=”4797386290″ locale=”JP” title=”たのしいRuby 第5版”]

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

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

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

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

Amazon 商品の説明 より
【関連】 RubyやLinuxなどバイオインフォマティクスのオススメ書籍をまとめました。
スポンサーリンク





カテゴリー

今週よく読まれている記事

  1. 学会・会議で英語が絶望的にできなくて困るケース | オンライン開催で「英語力のなさ」を痛感した場合の対処法

    学会・会議で英語ができなくてに困るケース学会やイベント・会議などが、オンラインで開催される…
  2. r tidyverse 使い方 | 列 filter 絞り込み select関数 – dplyrパッケージ

    tidyverseで1つのデータフレームの列の絞り込みは、dplyrパッケージのselect関数を…
  3. プログラミングで疲れた脳をリフレッシュ 〜 鬼滅の刃「感動」と「やる気アップ」でストレス発散!

    ストレス発散は鬼滅で。「50%OFF」で読む!脳のパフォーマンスを上げるには、適度な休憩と…
  4. AWS ディスク容量不足 新しいボリュームを追加する

    バイオインフォマティクスでは大きなファイルを扱うことがあるので、ディスク不足に陥ることがあります。…
  5. 「知っている」と「知らない」とでは、もしものとき、大違いになる – コロナうつ対策

    コロナうつなどという言葉を聞くようになりましたが、派遣切り、解雇、リストラは、これから本格化します…

人気記事

  1. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  2. R言語

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  3. Excel, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…

おすすめ記事

  1. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…
  2. シェルスクリプト

    シェルスクリプト | ファイル存在チェック・空ファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…
  3. awk, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…