ので、それこそブロックをつかってブロックスコープみたいなのを作ってみる。
module Kernel def b yield end end x = 1 b {|x| x = 2 b {|x| x = 3 puts x #=>3 } puts x #=>2 } puts x #=>1
もちろん、括弧の代わりに do ~ end
でもできます。
ただし、変数をいちいち |○|としないとスコープにならない。メソッド名の b も邪魔。
しかし、ブロックスコープがなくても不便だと思ったことがないなあ。