From: nobu.nakada@... Date: 2002-06-18T12:21:04+09:00 Subject: [ruby-dev:17503] Re: blocks and local variables なかだです。 At Tue, 18 Jun 2002 08:08:43 +0900, Yukihiro Matsumoto wrote: > _a案の問題は、ブロックローカル変数が所属するブロックが指定で > きないため、 > > * 外側のブロックのブロックローカル変数へのアクセス > * 外側のブロックのブロックローカル変数への代入 > > の両方に難点があることです。上記の方法ではすぐ外側のブロック > ローカル変数にしか代入できませんし、クロージャとして使う場合 > には、いつも戻り値をその目的のために利用できるとは限りません > から、あまり望ましくないと思います。 [ruby-dev:17484]のはどうでしょう。 def local(*args) yield *args end _a = 100 local(1) {|_a| p _a #=> 1 local { local(10) {|_b| ::_a = _b } } p _a #=> 10 } p _a #=> 100 最も内側の一つしかアクセスできませんが、充分じゃないかという気 がします。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦