if~end節
基本形
一般的なif
文の書き方で条件が真のときにthen
節が実行される。必ずend
で閉じる。
1 2 3 4 5 6 7 |
product = "PC" if product == "PC" then puts "20% off" end # 20% off |
else
else
節も同じ。
1 2 3 4 5 6 7 |
if product == "PC" then puts "20% off" else puts "10% off" end # 20% off |
elsif
elseif
ではなくてelsif
。
1 2 3 4 5 6 7 8 9 |
if product == "mouse" then puts "30% off" elsif product == "PC" then puts "20% off" else puts "10% off" end # 20% off |
thenの省略
if
節やelsif
節の後のthen
は省略可能。
1 2 3 4 5 6 7 8 9 |
if product == "mouse" puts "30% off" elsif product == "PC" puts "20% off" else puts "10% off" end # 20% off |
一行で書く
一行にまとめることは可能。ただしthen
がないとエラーになる。
1 2 3 4 5 6 7 |
if product == "PC" then puts "20% off" else puts "10% off" end # 20% off # 'then'がないとエラー # if product == "PC" puts "20% off" else puts "10% off" end # syntax error, unexpected tIDENTIFIER, expecting then or ';' or '\n' |
';'
で区切ると正常に実行される。
1 2 3 4 5 |
if product == "PC"; puts "20% off"; else puts "10% off"; end if product == "PC"; puts "20% off" else puts "10% off" end # 20% off # 20% off |
値を返す
if
文は条件に対応した節の値を持つ。
1 2 3 4 |
a = if false then "OK" else "NG" end puts a # NG |
後置
実行文の後にif
文を置くと、条件が真の場合に文が実行される。
1 2 3 4 5 |
for n in 0..9 do puts n if n % 2 == 1 end # 13579 |
unless文
基本
unless
は条件が真でなければ(偽のときに)then
節が実行される。
1 2 3 4 5 6 7 |
product = "PC" unless product == "PC" then puts "10% off" end # 20% off |
else
unless
文のelse
節は条件が真の時(偽でないとき)に実行される。
1 2 3 4 5 6 7 |
unless product == "PC" then puts "10% off" else puts "20% off" end # 20% off |
一行で書く
if
文と同じく一行にまとめられる。
1 2 3 4 5 |
unless product == "PC" then puts "10% off" else puts "20% off" end unless product == "PC"; puts "10% off" else puts "20% off" end # 20% off # 20% off |
後置
実行文の後にunless文を置くと、条件が偽の場合に文が実行される。
1 2 3 4 5 6 |
for n in 0..9 do print n unless n > 4 end puts # 01234 |
case文
基本
case
文は複数の条件を順番に確認していく。
1 2 3 4 5 6 7 8 9 10 11 12 |
product = "PC" case product when "mouse" then puts "30% off" when "PC" then puts "20% off" else puts "10% off" end # 20% off |
thenの省略
then
は省略できる。
1 2 3 4 5 6 7 8 9 10 |
case product when "mouse" puts "30% off" when "monitor", "PC" puts "20% off" else puts "10% off" end # 20% off |
値を返す
case
文は真となった条件の節の値が戻り値となる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
product = "monitor" discount_rate = case product when "mouse" 0.3 when "PC" 0.2 else 0.1 end puts "#{discount_rate * 100}% off" # 10.0% off |