From: nobu.nakada@... Date: 2002-06-19T16:03:42+09:00 Subject: [ruby-dev:17521] Re: blocks and local variables なかだです。 At Wed, 19 Jun 2002 14:59:09 +0900, K.Kosako wrote: > > |<...>を使用した場合には、パラメタだけでなくブロック内で使用している > > |全てのローカル変数が、デフォルトでブロックローカルになるというのでは > > |どうでしょうか。 > > |<...; a,b>で明示的に宣言した変数(a,b)だけがブロックローカルでなくなる。 > > > > クロージャとする場合に外部変数の宣言が必要というのがちょっと > > 使いにくいような気もしますが。 > > 宣言による方法を止めて、ローカル変数名をバックスラッシュで修飾する > という方法にしてみました。 > この記法が、現状の何かの機能と衝突していなければ良いのですが。 > > x = 10 > foo do > bar do <> > p \\x # => 10 > x = 20 > \x = 30 > \\x = 40 > p x # => 20 > end > p x # => 30 > end > p x # => 40 記法に対する違和感とか、ネストが変わったときにどうするかという 問題は置いておいても、そもそもそんな多重指定する機能自体必要で しょうか。 ネストしたブロック内部から直接アクセスするということは、それだ け内部と外部の結合が強いはずです。そういう状態でわざわざ衝突す る名前を付けるということは考えにくいのですが。 変数をブロックローカルにするということは、結合を弱くしたいとい うことじゃないんでしょうか。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦