原です。 > まつもと ゆきひろです. > foo.extend do > のように使ってください. あ、なるほど。 > 疑問を感じる理由は以下の通りです. > > * 特異メソッド定義を並べるのといろんな意味でほとんど大差な > いのではないか. > > * そもそも特異メソッドにはメソッドを追加するという性質上, > 衝突などがつきまとい,気軽に追加できない場合がある.より > 静的な現在程度の方が無難では その通りですね。要望しておいてこう言うのもなんですが。^^; ま、便利なこともあるので、責任とって(?)しばらく使ってみ ます。 > そういう意味です.論旨は分からないでもないですけど,やはりこ > こは「fooという性質を追加するのだ」ということで「fooという性 > 質を表現する形容詞」を名前に持つModuleを定義して欲しいと思い > ます. 水かけ論になる前に引っ込むつもりですが、、、 うーん、foo はあくまでも C の性質であって、わざわざ B を定義 するほどのこともないわけです。super が使えるようになるという 効能があるだけです。 > |#ここまで書いてさっき話題になったクラス Kernel の存在意義 > |#とかモジュール化の話と関連があることに気づきました。 > > 関連はあるでしょうね.ちなみにKernelは「本来Objectの性質なん > だが,トップレベルでの再定義でsuperが使えるようにするための > モジュール」です. ユーザーが Kernel を include する事はないのに Kernel という名 前があるわけですよね。確かに複数のメソッドをまとめておいて名 前をつける事には意味があると思います。しかしこの無名モジュール の include を使って、全て Object に込めてしまう手もあるかと。 一方、無名モジュールのデメリットを考えてみると、、、 ちょっと ruby プログラミングが変わってしまうかもしれないですね。 普段だったら A > B > C > D > E と継承クラスやモジュールを作る ところを、えいっと圧縮して C と E 二つぐらいで済ませてしまうか もしれない。一つのクラスなのに内部で他層になっている状態。 本来 C の本体であるべきメソッド群を、念ののためにとかいって include begin (do ?)以下に延々と書かれて、辟易するかもしれ ない。 ---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=-- Shin-ichro Hara(Nagaoka Univ.of Tech.)