From: matz@... (Yukihiro Matsumoto) Date: 1997-02-04T15:52:42+09:00 Subject: [ruby-list:2042] Re: [Req] no-name module (Re: [Request] static var?) まつもと ゆきひろです. In message "[ruby-list:2040] Re: [Req] no-name module (Re: [Request] static var?)" on 97/02/04, sinara@blade.nagaokaut.ac.jp writes: | |原です。 | |> |(4)無名のモジュール | |> ちょうどextendに手を入れていたところでもあ |> るし,実装は全然むずかしくないので,undocumented featureとし |> て追加してみましょう.なお,この仕様は予告なく削除されること |> があります. | |おー!ありがとうございます。 foo.extend do def bar() .. end end のように使ってください. | 特定のオブジェクトに「複数」のメッソッドをそのオブジェクトを | レシーバとして「その場で」定義する。 | |という事が出来てもいいじゃないかと思いました。まあ、特異メソッ |ド並べればいいわけではありますが。^^; 疑問を感じる理由は以下の通りです. * 特異メソッド定義を並べるのといろんな意味でほとんど大差な いのではないか. * そもそも特異メソッドにはメソッドを追加するという性質上, 衝突などがつきまとい,気軽に追加できない場合がある.より 静的な現在程度の方が無難では まあ,作ってからいっても説得力ないですけど. |と書くぐらいなら(そして Foo を再利用しないなら)、もともと | |class C | def foo() ... end |end | |とかけるじゃないか?という意味でしょうか。そうでなかったら |以下の説明は意味ないですが(かなりくどいかもしれませんけど) そういう意味です.論旨は分からないでもないですけど,やはりこ こは「fooという性質を追加するのだ」ということで「fooという性 質を表現する形容詞」を名前に持つModuleを定義して欲しいと思い ます. |#ここまで書いてさっき話題になったクラス Kernel の存在意義 |#とかモジュール化の話と関連があることに気づきました。 関連はあるでしょうね.ちなみにKernelは「本来Objectの性質なん だが,トップレベルでの再定義でsuperが使えるようにするための モジュール」です. まつもと ゆきひろ /:|)