我将在代码中解释我正在寻找的内容,因为这可能是最简洁的:
module Mixin
def method
puts "Foo"
end
end
class Whatever
include Mixin
end
w = Whatever.new
w.method
=> "Foo"
# some magic here
w2 = Whatever.new
w.method
=> NoMethodError
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用remove_const取消定义Mixin模块,但这似乎对Whatever没有任何影响.我曾假设#include只是将模块的引用添加到类的方法解析链中 - 但这种行为与此不一致.
任何人都可以告诉我幕后实际做了什么,以及如何扭转这种局面?