Edited at

【Ruby】配列イテレータ内の変数を外から参照したい

More than 1 year has passed since last update.


結論

for文はスコープを作らないので、ループ変数を外から参照できます。


for

for i in ['a', 'b'] do

s = i
end
puts s


出力

'b'



Rubyのスコープについて

配列でイテレータを回したい場合以下の二つが考えられると思います。


  • Array#each

  • 繰り返し構文のfor


forとeachの違い


  • eachはブロックを作る

  • forはブロックを作らない

ブロックはスコープを作るので、eachはスコープを作ります。

Rubyの繰り返し構文はスコープを作らないので、forはスコープを作りません。