Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Ruby

【Ruby】case文の書き方と使い方の基本

Ruby case文

動画で解説を見る



開発環境

  • Ruby version: ruby 3.1.2

Rubyのcase文とは

Rubyのcase文とは、コンピュータプログラムで命令が実行される流れを定めた制御構造のうち、条件式の真偽によって処理を分岐させる条件分岐の構文です。

複数の候補から条件分岐させる処理を記述する場合、同じ処理をif文でも記述することができますが、より見やすく簡潔に書くためにcase文を用いた条件分岐で処理を行うほうが望ましい場合があります。

公式リファレンス:https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#case

Rubyのcase文の書き方

Rubyのcase文の書き方を「case文の基本形」「case文の省略形」をご紹介します。

Rubyのcase文の基本形

Rubyのcase文の基本形は下記のように記述します。

比較の対象となるオブジェクトを指定し、オブジェクトがwhenの後に記述された式と一致しているかどうかを演算子「===」を用いて判定し、結果がtrueである時にthen以下の処理を行います。

また、Rubyのcase文のwhenは複数の条件式を並べられるので、breakが用意されていないため、他の言語の違いとして留意する必要があります。

上記と同じ処理をif文で記述した場合は以下となります。

case文とif文の複数条件の処理を比較するとcase文のほうが簡潔で見やすいかと思います。

caseの戻り値は、if文と同様に「上から順、かつ、左から順」に判定し、最後に判定した式の結果を返しますが、いずれの条件も成り立たなければnilを返します。

Rubyのcase文の省略形

Rubyのcase文の省略形はthenを省略することができます。

実際の開発ではthenを省略して書くことがほとんどなので、省略形で覚えるのがおすすめです。

Rubyのcase文の使い方

Rubyのcase文のよくあるパターンをサンプルコードを用いて使い方の解説をしていきます。

case文のwhenで複数条件を使用したパターン

case文のwhenで式を「,(カンマ)」で区切ることで複数条件を指定することができます。

上記と同じ処理をif文で記述した場合は以下となります。

case文のwhenで「,(カンマ)」で区切られた式はor条件で判定してくれています。

case文のwhenで範囲オブジェクトを使用したパターン

case文のwhenで式を範囲オブジェクトで指定することができます。

whenで範囲オブジェクトのrangeを指定することにより、対象となるオブジェクトが範囲内であればtrueと判定してくれます。

また、「数字..nil」とすることで終端を持たない「数字以上」を扱うことができますが、nilを省略して「数字..」としても挙動は同じになります。

case文のwhenで配列展開を使用したパターン

Rubyのcase文のwhenで式の前に「*」をつけることで配列展開されます。

配列展開された27行目の「when *kyushu」と鹿児島が一致したことにより、28行目の「puts "九州地方・沖縄地方"」が実行されます。

27行目は配列展開を記述すると「when "福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県"」となっています。

そのため、case文のwhenで複数条件を使用したパターンと同様の挙動になります。

case文のwhenで正規表現を使用したパターン

Rubyのcase文のwhenで正規表現を使って判定することもできます。

上記は郵便番号の最初の3桁が数字、間に「-(ハイフン)」、末尾の4桁が数字に一致しているかどうかを判定しています。

おわりに

Rubyのcase文の使い方を解説してきました。

Rubyの条件分岐はif文を使用することが多いかと思いますが、case文と使い分けることでより見やすく簡潔に書くことができますので、是非、参考にしてください。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Ruby