相关疑难解决方法(0)

如何反转ruby的include函数

我将在代码中解释我正在寻找的内容,因为这可能是最简洁的:

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只是将模块的引用添加到类的方法解析链中 - 但这种行为与此不一致.

任何人都可以告诉我幕后实际做了什么,以及如何扭转这种局面?

ruby metaprogramming class

22
推荐指数
2
解决办法
7494
查看次数

与Ruby相反的是什么?

如果我有一个类实例,包含几个包含的模块,我可以动态取消包含一个特定的模块(为了替换它)?

谢谢.

ruby reflection

16
推荐指数
3
解决办法
3780
查看次数

标签 统计

ruby ×2

class ×1

metaprogramming ×1

reflection ×1