Flightクラス メソッドとインスタンス メソッドの両方で呼び出されるモジュールがあるとします。include、extend、または両方を使用して、そのメソッドをクラスに取得できます。
class Bat < Mammal
# Add Flight's class methods to Bat.
extend Flight
# Add Flight's instance methods to Bat.
include Flight
...
end
includeに追加FlightされますBat.ancestorsが、追加されextendません。
私の質問は、モジュールとクラスでこれが異なるのはなぜですか? をサブクラス化するとMammal、常にクラス メソッドとインスタンス メソッドの両方を一度に取得します。ただし、モジュールを混在させると、クラス メソッドとインスタンス メソッドの両方を一度に取得することはできませんself.included(フックまたはActiveSupport::Concernのようなものを使用しない限り)。
この違いの背後にある言語設計の問題はありますか?
