Ruby 元编程:通过方法创建方法

发布于 2024-12-05 23:48:35 字数 239 浏览 1 评论 0原文

我只是想知道一些元编程。

实际上,我需要在方法中创建方法,或者只是通过块在类的根中创建方法。示例:

["method_a", "method_b"].each do |m|
  Marshal.generate_a_method_called(m)
end

有人知道这是怎么可能的吗?该方法的作用应该放在哪里?我的方法需要一个参数。

你的,

乔恩。

I just wondered about some metaprogramming.

Actually I need to create a method within a method, or just create a method in the root of a class by a block. example:

["method_a", "method_b"].each do |m|
  Marshal.generate_a_method_called(m)
end

Does somebody know how this is possible? And where to place what the method does? I need one argument for my method.

Yours,

Joern.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぇ气 2024-12-12 23:48:35

您可以使用define_method:

[:method_a, :method_b].each do |m|
  define_method(m) do
    # your method stuff
  end
end

You could use define_method:

[:method_a, :method_b].each do |m|
  define_method(m) do
    # your method stuff
  end
end
Saygoodbye 2024-12-12 23:48:35

我不明白你的例子。您是否也生成该方法的源代码?

因此,我将从《Perrotta:元编程 Ruby》一书中的示例开始

class MyClass
  define_method :my_method do |my_arg|
    my_arg * 3
  end
end

obj = MyClass.new
obj.my_method(2) # => 6

I don't understand your example. Are you generating the source for the method as well?

So I will start with an example from the book Perrotta: Metaprogramming Ruby

class MyClass
  define_method :my_method do |my_arg|
    my_arg * 3
  end
end

obj = MyClass.new
obj.my_method(2) # => 6
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文