[ruby-list:42985] Re: 6.12 includeとextendはどう違いますか

From: Yukihiro Matsumoto <matz@...>
Date: 2006-11-08 04:07:01 UTC
List: ruby-list #42985
まつもと ゆきひろです

In message "Re: [ruby-list:42984] 6.12 includeとextendはどう違いますか"
    on Wed, 8 Nov 2006 11:48:27 +0900, take_tk <ggb03124@nifty.com> writes:

|「includeはmoduleをクラス(モジュール)にインクルードして、メソッドを関数
|形式で呼べるようにし、extendは moduleをオブジェクト(インスタンス)にイン
|クルードして、メソッドを特異メソッドとして追加します。」
|という説明しかないのですが、同じ名前のメソッドがある場合には顕著な違いが
|あるようです。
|
|次のような説明を追加してもらえませんでしょうか?

個人的な印象としてはあまり良い説明ではないように感じます。

そもそもextendはオブジェクト対象、includeはクラスまたはモジュー
ル対象です、で終わりにしたいのですが。つまり、両方とも自分が
対象にしている場所の直上に挿入されるため、extendの場合自クラ
スとの間に入って優先されるように見え、includeの場合、クラス
の上に来るためインスタンスからみるとクラスの方が優先されるよ
うに見えます。

ですから、「インスタンスから見る」のと「クラスに挿入したもの
をインスタンスから見る」のを同時に行うためにこのような区別が
発生するのですが、理解しやすくするためにそのような視点を導入
したはずなのに、余計に複雑で難しくなっていると思います。

                                まつもと ゆきひろ /:|)

In This Thread