From: Akinori MUSHA Date: 2001-05-19T02:44:40+09:00 Subject: [ruby-list:29713] Re: with(obj){ } が欲しい。 At Thu, 17 May 2001 23:45:02 +0900, たけ (tk) wrote: >  ローカル変数への代入だけで変数定義なしに使える仕様から考えると、ローカ > ル変数のつもりで書いた部分が属性設定メソッドを呼んでしまう可能性がある。 > そうすると、見つけにくいバグの温床になりますね。  導入するなら VB みたいな明示的省略方式がいいと思います。 with (obj) { .meth1 = var1 .meth2 var2, var3 } with(obj) はレシーバ省略時のデフォルトオブジェクトをセットして ブロック内を実行する (終わったら戻す) という仕様です。  ネストは、複雑になるのでサポートしない方がいいでしょうね。 確かに .. で二つ上を参照などという手がないこともないが、全く 美観を損ねます。(VB でもサポートしていない)  パーザ的には、 a .b をどう解釈するのかという互換性問題が出てきますが、これは例の a+b / a +b / a + b と同じ方式がいいと思います。なお、もともと a .b は二行に分けて評価されるので、その点はこの文法の導入に際して 有利ではあります。  あと、スコープの  以上、 IRC でだらだら書いたことをだらだらまとめてみました。 -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "Freeze this moment a little bit longer, make each impression a little bit stronger.. Experience slips away -- Time stand still"