はじめに
今回はincludedに関する内容です。Ruby Goldの試験でincludedに関して自信を持って回答できなかったため、簡単にまとめてみます。
irbで確認してみた
環境はruby 3.1.4です。
こちらによると、クラスでモジュールがincludeされた際に呼び出されるメソッドらしいです。
実際に、クラスに対してモジュールをincludeし実行
module Mod
def self.included(base)
p "#{base} include #{self}"
end
end
class Hoge
include Mod
end
irb(main):001* module Mod
irb(main):002* def self.included(base)
irb(main):003* p "#{base} include #{self}"
irb(main):004* end
irb(main):005> end
=> :included
irb(main):006>
irb(main):007* class Hoge
irb(main):008* include Mod
irb(main):009> end
"Hoge include Mod"
=> Hoge
すると、includedメソッドが呼び出されて"Hoge include Mod"が表示されていました。
おわりに
確認した結果、includedメソッドはクラスでモジュールがincludeされた際に呼び出されるメソッドだということが分かりました。includeされた時に裏でどんなメソッドが関連して動いているのか普段気にすることがあまりなかったので、今回知れて良かったです!誤り等ありましたらご指摘いただけますと助かります!
参考