ログに書き込むメソッドを備えたモジュールがあります。各メッセージに、このメッセージを記録したクラスの名前を入れたいと思います。
include
モジュールは、またはを使用して混在させることができますextend
。いずれの場合も、ログに正しいクラス名を付ける必要があります。
蒸留コード:
module M
def f
self.class.name
end
end
class C
extend M
include M
end
p C.f # => "Class"
p C.new.f # => "C"
ご覧のとおり、最初の呼び出しではが正しく出力されません"Class"
。私もそうなりたいです"C"
。
これを達成する方法は?