嗨我想使用mixin來定義一些使用define_method的方法。我想這樣做如何在mixin中使用define_method?
module A
%w(a b c d).each do |w|
define_method(w) { "method #{w}" }
end
end
因此,我可以再做
class B
include A
end
B.new.C# => 'method c'
但是,這並不工作。
我試過(幾乎)所有涉及包括,instance_eval class_eval等... nothign工作。
可以嗎?
更新
有最初在我張貼的例子語法錯誤,但是這並不是真正的問題。我只是做了這個帖子的例子,那不是真正的例子(這個帖子太長了)。
我的問題是我在我的名單%w(a, b, c, b)
而不是%w(a b c b)
因此,a,
定義,而不是使用a
一個逗號。傻我,(雖然很難發現)。
看到它適用於你們幫我解決問題,謝謝
好吧,它適用於我(R 1.8.7) – 2012-04-24 16:54:41
你在你的模塊中缺少'end'。它怎麼不起作用?是否有錯誤訊息? – matt 2012-04-24 16:58:51
@matt不是問題,請參閱更新。謝謝 – mb14 2012-04-25 09:25:34