【Ruby】条件判断

「はじめてのRuby」を読んでのメモ。
今回は第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
else1
end


case文
case 比較したいオブジェクト
when1  #( then ) 1
when2 
  文2
when33
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

コンパクトに、また何を実行したいのかを目立たせて書くことが出来る。