モジュールを取り込む時に使うinclude
とextend
の違いについて理解が曖昧だったため整理。
includeとすると、インスタンスメソッドとしてモジュール内の関数が取り込まれる。
一方、extendとすると、クラスメソッドとしてモジュール内の関数が取り込まれる。
module MyModule
def my_method
"Hello"
end
end
# includeの場合
class ClassA
include MyModule
end
# extendの場合
class ClassB
extend MyModule
end
# 使用方法の違い
ClassA.new.my_method # includeはインスタンスメソッドとして追加
ClassB.my_method # extendはクラスメソッドとして追加