Ruby/Rubyの基礎知識

Rubyの条件分岐・制御構文の使い方(3ページ目)

Rubyのif、unless、caseなど条件分岐構文の紹介と、いくつかのパターンの使い方を解説します。

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

値を返す条件式

ここまで触れてきませんでしたが、いままで紹介してきた構文はすべて「式」であり、値を返します。この特性は非常に便利で、たとえば一例として本番環境・ステージング環境・開発環境でアクセスするAPIのURLを切り替えるときを考えてみます。

例のように、if式の返す値を変数に代入してやれば変数代入が一箇所にまとめることができます。

三項演算子のところで取り上げた例はそれぞれの節内でputsしていましたが、三項演算子自体が値(この例だと文字列)を返すため以下のようにも書けます。

case

case は可能性を並列に並べるときに使います。case は言語によっては switchcond という名前で似た機能が提供されていることもあります。

また、caseもif式や三項演算子のように値を返します。例として上記の環境によるURL切替処理をcaseを使って書き換えてみましょう。

さて、上の例では単純に「==」による文字列比較と同じ動作をしていますが、when部分では内部的に 「===」演算子による等価評価が行われているため、より柔軟なマッチをサポートしています。

===」はデフォルトでは内部的に「==」を呼び出すだけですが、いくつかのクラス(Range, Moduleなど)で再定義されているため、たとえばオブジェクトのクラスによって処理を分岐させたり、

whenのあとにRangeクラスのオブジェクトを置いて、含まれる範囲で処理を分けることも出来ます(ifで大小の不等号を並べるよりも読みやすいのではないかと思います)。

詳しくはObject#===のリファレンス(class Object)を参考にしてください。

【編集部おすすめの購入サイト】
Amazonで Ruby 関連の書籍をチェック!楽天市場で Ruby 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます