[ruby]
なぜ、append_featuresで受け取るパラメータがモジュールでないのか悩む?
下が実験。
01:23:40 shelby:~/src/ruby/misc$ cat append_features.rb
class Module
alias :old_include :include
def include(arg)
p self.name
p arg.name
old_include(arg)
end
def append_features(arg)
p self.name
p arg.name
end
end
if $0 == __FILE__
module Foo; end
class Test
include Foo
end
end
01:24:14 shelby:~/src/ruby/misc$ ruby append_features.rb
"Test"
"Foo"
"Foo"
"Test"
結果を見て、クラスとモジュールページを見て、ソースを見て、どうやらincludeメソッドの中でreceiverとparameterを入れ替えていることがわかる。
なぜ、そんな事をしているかわからなかったが、結局モジュールの方で何らかの付加処理をしたい場合にそうなっていないと書けないことに気づく。