我有两个类,我想将所有方法从一个类复制到另一个类。有些方法不会有参数,有些会有参数,有些会有散列作为参数。而且我从来不知道哪些人会。所以我创建了这个代码,直到我发现它没有考虑到参数。有没有办法从一个Class中获取方法列表,然后将它们完全克隆到另一个类中?将所有方法从一个类复制到另一个类
def partial(cls)
cls.instance_methods(false).each do |method_name|
define_method(method_name) do
cls.new.method(method_name.to_sym).call
end
end
end
的方法是在第一类使用define_method动态创建的,所以我不能只用一个包含。上面的代码已经传入了cls,然后它会找到所有实际写入该类的实例方法,而不是它继承的实例方法,然后创建一个具有相同名称的新方法。当这个方法被调用时,它实际上用同名的方法调用另一个类。这很有用,除非我有参数。我有条件检查,看它是否有参数,然后让它调用一个带参数的方法,但它没有很好地处理哈希。它将散列作为一个参数的数组,这不是我想要的。
我在想,如果有一个简单的方法来从字面上说,“嘿,你知道这个方法,不管它是什么,硬是让同样的事情,这个其他类。”
我很困惑你想做什么。你正在讨论实例方法,但是你会说'用同名的方法调用另一个类。除非你跟踪其他班级的情况,否则这是行不通的。 – AShelly 2012-03-19 18:45:17