条件分岐について
条件分岐の種類
- if
- unless
- case
真偽値について
真:false と nil 以外全部
偽:false と nil
if 文
if 条件 then 真の時の処理 end
if 条件 then 真の時の処理 else 偽の時の処理 end
if 条件 then 真の時の処理 elsif 条件その2 then 条件その2が真の時の処理 else 上記以外の時の処理 end
then は省略可能だよ。
unless 文
if 文の反対になる
unless 条件 then 偽の時の処理 end
unless 条件 then 偽の時の処理 else 真の時の処理 end
ただし、unless には elsif 相当の文がありません。
使いどころがよくわからん。。。
(2014/9/16 追記)
unless 文に関しては、else 節はあまり使わないようです。
条件を満たさない時の処理を書きたい場合に使うみたい。
case 文
switch 文のような感じ。
case 比較したいオブジェクト when 値その1 オブジェクトが値その1と等しい時の処理 when 値その2 オブジェクトが値その2と等しい時の処理 else 上記以外の場合の処理 end
引っ掛ける値を複数持つことも可能。
item = "my item" case item when "my item", "a", "c" puts "one" when "b" puts "two" else puts "else" end 実行結果 one
オブジェクトのクラス判定。
item = "my item" case item when String puts "Im String." when Numeric puts "Im Numeric." else puts "else" end 実行結果 Im String.
オブジェクトの比較
オブジェクトは、object_id という一意の値を持っている。
2つのオブジェクトが等しいかどうかを判断する場合、equal? メソッドを使用する。
item = "my item" item2 = item item3 = "my" + " item" puts item.object_id → 70220730711020 puts item2.object_id → 70220730711020 puts item3.object_id → 70220735104680 p item.equal?(item2) → true p item.equal?(item3) → false
(2014/9/16 追記)
if・unless 修飾子
if・unless を修飾子として使用できます。
if 文の処理が1行で済む場合などは、極力修飾子を使うのがgeekへの近道。
仕事でC++やJavaやってますが、PerlやRubyはこんな書き方できるみたいで羨ましい。
条件が真の時に実行したい式 if 条件式 # b が 0 より大きい場合、a に 1 を代入する a = 1 if b > 0
条件が偽の時に実行したい式 unless 条件式 # b が 0 以外の場合、a に 1 を代入する a = 1 unless b == 0

- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (26件) を見る

- 作者: 久保秋真
- 出版社/メーカー: SBクリエイティブ株式会社
- 発売日: 2013/11/08
- メディア: Kindle版
- この商品を含むブログ (2件) を見る