【发布时间】:2012-04-24 16:51:59
【问题描述】:
您好,我正在尝试使用 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 等...没有任何工作。
可以吗?
更新
我发布的示例中最初存在语法错误,但这不是真正的问题。我只是为帖子制作了示例,这不是真实示例(发布时间有点长)。
我的问题是我在列表中使用了逗号 %w(a, b, c, b) 而不是 %w(a b c b)
因此,定义了a, 而不是a。傻我,(虽然很难发现)。
看到它对你们有用,帮助我解决了问题,谢谢
【问题讨论】:
-
好吧,它对我有用(R 1.8.7)
-
您的模块中缺少
end。它怎么不工作?有错误信息吗? -
@matt 这不是问题,请参阅更新。谢谢
标签: ruby metaprogramming