您好我正在尝试使用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 work。
有可能吗?
我发布的示例中最初出现语法错误,但这不是真正的问题。我刚刚为帖子做了一个例子,这不是真实的例子(有点太长了,不能发布)。
我的问题是我在列表中使用了逗号%w(a, b, c, b)
而不是%w(a b c b)
因此,定义a,
而不是a
。傻傻的,(很难发现)。
看到它对你们有用帮助我解决了这个问题,谢谢
答案 0 :(得分:4)
模块不应该是:
module A
%w(a b c d).each do |w|
define_method(w) { "method #{w}" }
end
end
即end
缺失。