FrontPage  Index  Search  Changes  Login

niche programmer - (Ruby)ループ Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!ループ
!!基本ループ
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ループは新たなスコープを生成しない。それまで存在していたローカル変数はループ内で使用できるし、ループ内で生成したローカル変数はループを抜けた後も使用できる。
*イテレータが使用するブロックでは、ブロックで生成されたローカル変数はブロックの外からアクセスはできない。しかし、ブロック実行時にブロック内変数と同じ名前のローカル変数がすでに存在していた場合は、その既存のローカル変数がブロック内でも使用される。