我測試元編程,我有一個情況下,我不明白:模塊擴展和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上;} –
你變得相當不錯:-) –