From: Nakamura Akifumi Date: 2000-07-22T01:55:38+09:00 Subject: [ruby-list:23975] Re: [ruby-dev:10353] Re: should prohibit `module_function' forclass Class お世話になっております。 A.中村です。 On Fri, 21 Jul 2000 12:49:58 +0900 matz@netlab.co.jp (Yukihiro Matsumoto) wrote: >微妙にイヤというのは、わからなくはないような気がしますが、 >やっぱりどうイヤなのかちゃんと聞きたい気もします。 Ruby(のやりかた)のせいとはとても言えないような 全世界的(笑)習慣なわけですが、同名の識別子による隠蔽が 自分が今いる場所の名すら隠蔽してしまう事があるってのは 結構用心が要るなぁ、しかも隠蔽が生じるかどうかは 文脈というか順序に依存するわけで、用心用心…です。 >どうあったら嬉しいかというのも聞けるとなお良し、ですね。 ありゃ。 class Zot class Zot end def self::Zot.zot p "zot" end end とは書けないんですね…あるいは def self.Zot.zot とかも。parse errorになっちゃう。 代替として、 class Zot class Zot end z=self::Zot def z.zot p "zot" end end Zot::Zot.zot とは書けますね。 特異メソッド定義って def 式 `.' 識別子 [`(' [引数 [`=' default]]...[`,' `*' 引数 ]`)'] ということですが、「識別子」じゃなくて「値」にするのは おかしいでしょうか? >また、現時点での私の答えは「わざわざ混乱するような >プログラムを書くのを禁止するつもりはない」です。 オーライ、というのともちょっと違いますが、 それより明らかにマシな方法が(少なくとも俺には) 見当たらないんで、はい。