クラスとインスタンスの両方のメソッドを持つFlight
というモジュールがあるとします。Rubyモジュールの継承がクラス継承のように機能しないのはなぜですか?
class Bat < Mammal
# Add Flight's class methods to Bat.
extend Flight
# Add Flight's instance methods to Bat.
include Flight
...
end
include
がBat.ancestors
にFlight
を追加しますが、extend
はしません:私はinclude
、extend
、またはその両方を使用してクラスにそのメソッドを取得することができます。
私の質問は、です。これは、モジュールと比べてなぜ、クラスと違うのですか? Mammal
をサブクラス化すると、I は常にとなり、クラスメソッドとインスタンスメソッドの両方を同時に取得できます。しかし、私は(私はActiveSupport::Concernようself.included
フックか何かを使用しない限り)I がが一度に両方のクラスとインスタンスメソッドを取得することはできません、モジュールに混ぜます。
この違いの後ろに言語設計の問題はありますか?
エンティティ、そうですか? :) –