【问题标题】:How do you invoke ruby module methods via reflection?如何通过反射调用 ruby​​ 模块方法?
【发布时间】:2012-09-22 09:10:16
【问题描述】:

我想让以下工作。这个想法是我可以向路由添加方法,如果它们存在,我以后可以使用它们。我正在使用 Ruby 1.8。

module Routes
  def home
    #stuff
  end

  def work
    #end
  end
end

Routes.method_defined? :home
# true

Routes.send(:home)
#NoMethodError: undefined method `home' for Routes:Module

【问题讨论】:

标签: ruby reflection ruby-1.8


【解决方案1】:

您可以使用以下代码:

Class.new.extend(Routes).send(:home)

【讨论】:

  • 我实际上不想要这种行为,但阅读文档是唯一的方法,除非我把它们变成模块方法。我拥有它们的方式是实例方法。
  • 我还有一个问题,如何判断模块方法是否已定义?
  • 你之前在 OP 中检查过,不是吗? :)
  • 在阅读您发布的问题之前,我不了解文档。 =)
  • 回答我自己的后续问题Routes.respond_to? 会很好。
猜你喜欢
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多