0

嗨,我正在尝试使用 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. 愚蠢的我,(虽然很难发现)。

看到它对你们有用,帮助我解决了问题,谢谢

4

1 回答 1

4

模块不应该是:

module A
  %w(a b c d).each do |w|
     define_method(w) { "method #{w}" }
  end
end

也就是说,end丢失了。

于 2012-04-24T17:04:08.813 回答