作者: Noritsugu Nakamura
日時: 2002/4/06(06:40)
中村 のりつぐ です。

In article <200204051501.g35F1A010853@...-net.or.jp> 
HIDAKA Takahiro <cv8t-hdk@...-net.or.jp> wrote:
> > 考えると、class に追加するより
> > module に追加するほうが多そうですね。
> 
>  この例は module に class を追加する例ですよね。
はい。
私は、「class にメソッドを追加できないとRuby ユーザは
非常に困りそう」と勘違いしたのですが、というよりも
「module に class を追加できないと、非常に困る」と
感じていただけだなと気がついたわけです。

で、「module に class を追加する」Ruby 流は、
ファイルで名前空間生成をしないので、
ファイルがモジュールを生成する Python とは異なる。
Python だったらどうするのかなと疑問を持ったわけで…
# Python のモジュールも生成するのは超簡単だけど
# import とかの部分はいまいち理解できていない…


> module にメソッドを追加する例も多いんでしょうかね。
単なる予想ですが、多くないと思います。

似た機能を持ったものを集めたのが、module で、
その module のメソッドを離れた場所に書く
(ファイルを分けるなど)するメリットを
余り感じなさそうだから。
(「module に class を追加する」のは例外でファイルを
分けて書きたいと思うらしい。<-- 編集のしやすさからか?)


>  Ruby のよくないかなーと思うことのひとつに、
> module の使われ方があります。
> 
>  主に名前空間の場合とMix-inの場合ということになるとは
> 思いますが、これは同じ概念でくくっていいんでしょうか。
> 結果的に内部的には同じことなのかもしれないんですけど、
> 他人のプログラムとかを読むときには多少頭をひねることがあります。

同じ疑問かどうか分からないのですが?、Ruby の module
の仕様に関して良く理解できていない点があります。

なぜ module_function :foo とわざわざ書かないと関数を
集約する機能(Math.sin とかの集合)として使えない
仕様になっているか?です。


この点 Python は簡単そう。(その簡便さが本当に良いのか?
必要なのかも、いまいち良く分からないのですが…)

       中村 典嗣  E-mail:     nnakamur@...