条件分岐
if
value = 100 #変数の宣言 型はないのですべてオブジェクトとなる
#if文
if value > 90 then
puts "value is larger than 90"
elsif value > 50 then
puts "value is larger than 50"
else
puts "value is smaller than 50"
end
実行結果
value is larger than 90
if修飾子
#if修飾子
puts "おっけーだぜ" if true #右辺を評価して左辺へいく
実行結果
おっけーだぜ
unless
value = 100
#unless elsifはできない
unless value > 90 then
puts "90よりでかくないよーん"
else
puts "90よりでかいよーん"
end
実行結果
90よりでかいよーん
unless修飾子
#unless修飾子
puts "否!" unless false #trueだとputsされない
実行結果
否!
case
#case
case value
when 0 .. 99 #0?99という意味
puts "0?99だよーん"
when 99 .. 100
puts "99,100だよーん"
else
puts "0?100いがいだよーん"
end
実行結果
99,100だよーん
繰り返し
while
#while
value = 100
while value > 0
value = value - 1
end
puts value
実行結果
0
while修飾子
#while修飾子
value = 0
value = value + 1 while value < 100 #valueが100以下の場合に左辺を実行
実行結果
100
until
#until
value = 100
until value > 200
value = value + 1
end
実行結果
201
until修飾子
#until修飾子
value = 201
value = value - 1 until value < 0
実行結果
-1
for
#for
for i in [1, 2, 3]
puts i
end
実行結果
1
2
3
break
#break
for i in [1, 2, 3]
puts i
break
end
実行結果
1
next
#next
for i in [1, 2, 3]
puts i
next
puts i
end
実行結果
1
2
3
redo
#redo
isFirst = true
for i in [100, 200, 300]
if isFirst then
isFirst = false
puts i
redo
end
puts i
end
実行結果
100
100
200
300
retry
#retry
isFirst = true
for i in [1000, 2000, 3000]
if isFirst then
isFirst = false
puts i
redo
end
puts i
end
実行結果
1000
1000
2000
3000
例外処理
raise
raise "fujihara" #RuntimeError
#raise SyntaxError, "fujihara" #SyntacError
#raise SyntaxError.new("fujihara") #SyntaxError
#raise "dai"
#raise #最後に発生した例外
beginとrescue修飾子
#例外処理
begin
raise "fujihara" #RuntimeError
rescue => e
puts "例外をキャッチしたぜ"
puts $!
puts e #eに格納されている
ensure
#例外処理
begin
raise "fujihara" #RuntimeError
rescue => e #StandardErrorのサブクラスなら全てをキャッチ
#resucue TypeError => e これならTypeErrorをキャッチしてくれる
puts "例外をキャッチしたぜ"
puts $!
puts e #eに格納されている
else
#begin節の最後までいったら実行される
ensure
puts "後処理です"
end
その他
return
BEGIN
#BEGIN 前処理
BEGIN {
puts "一番早いぜ"
}
BEGIN {
puts "BEGINだけど2個目だぜ"
}
実行結果
一番早いぜ
BEGINだけど2個目だぜ
・・・
END
END{
puts "一番遅いぜ"
}
END{
puts "ENDだけど2個目だぜ"
}
実行結果
ENDだけど2個目だぜ
一番遅いぜ