目次へ

4. 条件分岐(2)

2012/11/14 シナジーマーケティング(株) 河野 健太朗

Rubyでは以下の条件分岐の構文があります。

  • if
  • unless
  • case

4.3 if

ある条件に応じて処理の実行を振り分けたいときに使います。

if 条件A [then]
  # 条件Aが真の時実行される
elsif 条件B [then]
  # 条件Bが真の時実行される
else
  # 今までの条件に該当しない場合実行される
end

ifは最初に一つだけ、elsifは複数記述できます。elseは最後に記述します。
「elsif」は「elseif」ではありませんので注意が必要です。

評価したい条件が複数ある場合には、
elsif
else
を使用します。

また、thenは省略できます。(書かない方が多いようです)

# coding: utf-8

fruit = "apple"

print "#{fruit}: is "

if fruit == 'apple'
  puts "red"
elsif fruit == 'lemon' or fruit == 'banana'
  puts "yellow"
else
  puts "unknown"
end
> ruby if_test.rb
apple: is red

4.4 unless

ifの逆で、条件が偽の時に処理が実行されます。

unless 条件 [then]
  # 条件が偽の時に実行される
else
  # 条件が真の時に実行される
end

if の条件を否定したものと同じですので、以下のように書くこともできます。

if !条件 [then]
  # 条件が偽の時に実行される
else
  # 条件が真の時に実行される
end

unless には if と異なり elsif がありません。

# coding: utf-8
  fruit = "apple"
  print "#{fruit}: is "

  unless fruit == 'apple'
    puts "not red"
  else
    puts "red"
  end
> ruby unless_test.rb
apple: is red

4.5 case

特定の値によって、分岐を行いたい場合にはcase式が使えます。

case 式
when 値1 [then]
  # 式が値1と一致する時に実行される
when 値2 [then]
  # 式が値2と一致する時に実行される
when 値3 [then]
  # 式が値3と一致する時に実行される
when 値4 [then]
  # 式が値4と一致する時に実行される
else
  # 式がどれにも一致しない時に実行される
end
# coding: utf-8

  number = 1
  print "#{number}: "
  case number
  when 1
    puts "GOLD"
  when 2
    puts "SILVER"
  when 3
    puts "BRONZE"
  else
    puts "UNKNOWN"
  end
> ruby when_test.rb
1: GOLD

when には複数の値をコンマ区切りで指定できます。

case 式
when 値1, 値2, 値3  [then]
  # 式が値1か値2か値3と一致する時に実行される
else
  # 式がどれにも一致しない時に実行される
end

when で指定する条件には、範囲式、正規表現も使用できます。正規表現は後の章で説明します。

4.6修飾子

if と unless は 修飾子として、式の末尾に追記することができます。

variable = value if 条件
# 条件に一致するとき、変数に値が代入される

variable  = value unless 条件
# 条件に一致しないとき、変数に値が代入される

4.7 条件演算子

if ~ else ~ endを簡略した記述が可能です。

条件 ? 真の時 : 偽の時
  number = 1
  print "#{number}: "
  if number % 2 == 0
    puts "偶数"
  else
    puts "奇数"
  end

  puts "===================="

  answer = (number % 2 == 0 ? '偶数' : '奇数')
  puts "#{number}: #{answer}"

> ruby if_operator_test.rb

1: 奇数
====================
1: 奇数

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp