【Ruby】条件判断
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (22件) を見る
今回は第5章「条件判断」
条件判断文は大きく3つある。
- if文
- unless文
- case文
Ruby では、 false と nil だけが「偽」として扱われ、それ以外は全て「真」として扱われる。true や false を返さないメソッドでも、意味のある値を返せない場合は nil を返すメソッドであれば、条件判断に利用することが出来る。
また、真偽値を返すメソッドの名前は、ひと目で分かるように末尾に「 ? 」をつけるというルールが存在する。
論理演算子
条件1 && 条件2 #どちらも真の場合「真」 条件1 || 条件2 #いずれか一方が真の場合「真」 !条件 #条件を反転(「偽」なら「真」)
if x >= 1 && x <= 10 end #xが1から10の間にあるなら処理を行う
if文
a = 10 b = 20 if a > b #( then ) puts "a は b よりも大きい" elsif a < b puts "a は b よりも小さい" else puts "a は b と同じ" end #a と b の比較
unless文
if文と丁度反対の役割をする条件判断文で、条件が偽の時に文を実行する。
構文の形はifと変わらない。
unless 条件 #( then ) 文 end
a = 10 b = 20 unless a > b puts "a は b より大きくない" end
unless文でも else を使うことが出来る。
unless 条件 文1 else 文2 end
これは、次のif文と同じである。
if 条件 文2 else 文1 end
case文
case 比較したいオブジェクト when 値1 #( then ) 文1 when 値2 文2 when 値3 文3 end
when には一度に複数の値を指定することも可能。
他に、与えられたオブジェクトが String クラスか Numeric クラスか、などの判断も可能である。
array = [ "a", 1, nil ] array.each do |item| case item when String puts "item is a String." when Numeric puts "item is a Numeric." else puts "item is something." end end
if修飾子とunless修飾子
puts "a は b より大きい" if a > b
これは、次の文と同じである。
if a > b puts "a は b より大きい" end
コンパクトに、また何を実行したいのかを目立たせて書くことが出来る。