2008年11月20日木曜日

Rubyのスコープ・制御構造

while や for がスコープを作らないのに対し、loop や each などのイテレータはスコープを作ります


loopやeachはスコープあるんですね・・・.


(1..5).each do |i|
var = true
end
p var

$ ruby test.rb
test.rb:4: undefined local variable or method `var' for main:Object (NameError)



Squeakでいうブロック変数になると考えれば良さそう.

同じような結果にするには・・・.

(1 to: 5) do:[:v |
| var |
var = true.].
var " popupが表示され,var appears to be undefined at this point. Proceed anyway"





trap::スコープ、制御構造 - Rubyリファレンスマニュアル

0 件のコメント: