4月 7th, 2008at 16:13

Tags:

Ruby1.8.5の制御構造

このエントリーをはてなブックマークに追加

条件分岐

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 

#casecase value  when 0 .. 99          #0?99という意味    puts "0?99だよーん"

  when 99 .. 100    puts "99,100だよーん"

  else    puts "0?100いがいだよーん"end

実行結果

99,100だよーん

繰り返し 

while 

#whilevalue = 100while value > 0  value = value - 1end

puts value

実行結果

0

while修飾子 

#while修飾子value = 0value = value + 1 while value < 100 #valueが100以下の場合に左辺を実行

実行結果

100

until 

#untilvalue = 100until value > 200  value = value + 1end

実行結果

201

until修飾子

#until修飾子value = 201value = value - 1 until value < 0

実行結果

-1

for 

#forfor i in [1, 2, 3]  puts iend

実行結果

123

break 

#breakfor i in [1, 2, 3]  puts i  breakend

実行結果

1

next 

#nextfor i in [1, 2, 3]  puts i  next  puts iend

実行結果

123

redo 

#redoisFirst = truefor i in [100, 200, 300]

  if isFirst then    isFirst = false    puts i    redo  end

  puts iend

実行結果

100100200300

retry 

#retryisFirst = truefor i in [1000, 2000, 3000]  if isFirst then    isFirst = false    puts i    redo  end

  puts i

end

実行結果

1000100020003000

例外処理 

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個目だぜ一番遅いぜ
このエントリーをはてなブックマークに追加