5

私は多くの教科書を読んだことがあります

Rubyでは、クラスは1つのクラスのサブクラスにしかなれません。ただし、ミックスインを使用すると、共通の祖先のないクラスでメソッドを共有できます。

実際には、多重継承を実装する必要があるときはいつでも。私はミックスインを使用していますが、使用してModulesいません。例えば:

Module name_goes_here
  def method_name_goes_here
    .....
  end
end

次に、それらをクラスに含めます

class MySubClass < MySuperClass
  include module_name
end

今、私はそれぞれがミックスインについて話している複数のルビーの本を参照しました、そして突然、それらのすべてはミックスインとモジュールの関係が何であるかを明確にすることなくモジュールについて話し始めます。

だから、質問は:モジュール==ルビーのミックスインですか?はいの場合、その理由。いいえの場合、違いは何ですか?

PS:すみません、ばかげた質問なら

4

2 に答える 2

13

ミックスインは、クラスにコードを挿入できるようにする言語の概念です。

includeこれは、パラメータとしてaをとるキーワードによってRubyに実装されModuleています。

そうです、Rubyでは、ミックスインはモジュールで実装されています。しかし、モジュールにはミックスイン以外の用途があります。

たとえば、モジュールを使用して、クラスの名前空間を指定したり、ユーティリティ関数をカプセル化して、グローバル名前空間を汚染しないようにすることもできます。

于 2012-06-11T13:39:48.693 に答える
5

ウィキペディアの記事から

オブジェクト指向プログラミング言語では、ミックスインは、インスタンス化(そのクラスのオブジェクトの生成)を目的とせずに、サブクラスによって継承または再利用される特定の機能を提供するクラスです。

そうです、Rubyのモジュールは、モジュール自体をインスタンス化せずに機能を再利用する方法を提供します。「ルビーのミックスインはモジュールで実装されている」と言いますが、「ミックスインはモジュールであり、その逆も同様です」とは言えません。

于 2012-06-11T13:38:17.327 に答える