コードリーディング中に久々にforを見かけたのでメモします。
Rubyにもfor文による繰り返し表現があります。
たとえば、多重配列を弄るには以下のようにします。
for first, second, third in [[1,2,3],[4,5,6],[7,8,9]] puts first, second, third end
これをeachで書き直すと
[[1,2,3],[4,5,6],[7,8,9]].each {|first, second, third| puts first, second, third} #=> 6 #=> 15 #=> 24
となります。
完全に同じモノというわけでもなく
do ... endまたは{ }による ブロックは新しいローカル変数の有効範囲を導入するのに対し、 for文はローカル変数のスコープに影響を及ぼさない点が異なる
と、なんと内部で使った変数を後で呼び出す事ができます
first = 5 #=> 5 for first, second, third in [[1,2,3],[4,5,6],[7,8,9]] p first, second, third end #1 #2 # ... #7 #8 #9 #=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]] first #=> 7
下手に別のローカル変数なんぞを指定するとエラい事になります。