我测试元编程,我有一个情况下,我不明白:模块扩展和class_eval红宝石
module Bar
def self.append_features klass
klass.class_eval do
def self.a
puts 'a'
end
end
end
end
class Foo
extend Bar
end
哪里是界定“一”的方法? 因为:
Foo.new.a,Foo.a和Class.a不起作用!如果我使用include而不是Foo类的扩展,方法“a”定义为Foo类(Foo.a作品),我认为:如果include为“self”,Class =“self”为extend = Metaclass,但没有。
能解释方法“a”在哪里?
+1有趣! :)不知道'append_features';从来没有想过关于'extend'和'include'的区别。 – kiddorails
@kiddorails这是一个聪明的主意,因为有一个简单的'ri append_features'甚至'ri Module.append_features'可以给你提供足够的信息,然后发布到SO上;} –
你变得相当不错:-) –