FrontPage  Index  Search  Changes  Login

(Ruby)ループ

ループ

基本ループ

while <式>
  ...
end
until <式>
  ...
end

フリップフロップ演算子

1つめの条件が満たされると真を返し、2つ目の条件が満たされるまで真を返し続ける。

  • file
one
two
three
four
five
six
file = File.open("file")
while file.gets
    print if /three/ .. /five/
end

イテレータ

3.times do |x|
  print x, " "
end
# 0から9までの繰り返し
0.upto(9) do |x|
  print x, " "
end

forループ

eachのシンタクッスシュガー。(実際にはローカル変数のスコープが異なる)

for i in [1, 2]
  print i, " "
end

実際には以下のように翻訳される

[1, 2].each do |i|
  print i, " "
end

以下はどうなるのだろう?

for i in 1..2
  print i, " "
end

break,redo,next

break
もっとも内側のループを脱出する。
redo
ループ条件をチェックしたり、次の要素をフェッチせずに現在のループをやり直す。
next
ループの終わりにジャンプし、次の繰り返しに入る。

変数のスコープ

  • while,until,forループは新たなスコープを生成しない。それまで存在していたローカル変数はループ内で使用できるし、ループ内で生成したローカル変数はループを抜けた後も使用できる。
  • イテレータが使用するブロックでは、ブロックで生成されたローカル変数はブロックの外からアクセスはできない。しかし、ブロック実行時にブロック内変数と同じ名前のローカル変数がすでに存在していた場合は、その既存のローカル変数がブロック内でも使用される。
Last modified:2003/11/30 22:03:24
Keyword(s):
References: