From: "K.Kosako" Date: 2002-06-19T17:20:31+09:00 Subject: [ruby-dev:17524] Re: blocks and local variables nobu.nakada@nifty.ne.jpさんの <200206190703.g5J73d219947@sharui.nakada.kanuma.tochigi.jp>から >> 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 > > 記法に対する違和感とか、ネストが変わったときにどうするかという > 問題は置いておいても、そもそもそんな多重指定する機能自体必要で > しょうか。 実際に使用するのは一段外側で、二段以上はあまり使わないと思います。 記法として可能だったら、できるようにしてみようかというだけです。 バックスラッシュ以外に、見た目に違和感がなくて、使用可能で タイピング量が少なくて済むものなら何でもいいと思います。 > ネストしたブロック内部から直接アクセスするということは、それだ > け内部と外部の結合が強いはずです。そういう状態でわざわざ衝突す > る名前を付けるということは考えにくいのですが。 目的は以下の通りです。 1. 外側と名前が偶然衝突しても問題が起きないことを保証する方法を提供する。 2. スクリプトを読んだときに、ブロック中に書かれている個々のローカル変数の スコープ範囲がどうなっているかが、なるべく簡単にわかる。 で、最初はで明示的に宣言する方法を提案したのですが、 ブロックローカルでないものを全部宣言するのでは使いにくいと言われたので (確かに使いにくいです)、この方法にしてみました。 -- 小迫@ソフネック 渋谷区恵比寿1-15-1