Ruby:如何找到模块的所有类方法

时间:2017-02-04 06:22:41

标签: ruby metaprogramming

例如我有这段代码:

module ExampleModule
  def self.module_method
  end

  def normal_method
  end
end

如果我尝试拨打ExampleModule.instance_methods,我只能看到normal_method。我也在singleton_class中搜索过,但看起来Ruby并没有将类方法放在singleton class中:

ExampleModule.singleton_class.each do |method|
  print method
end

如何看self.module_method(只有这个方法,而不是模块ExampleModule的其他父方法)。

由于

1 个答案:

答案 0 :(得分:5)

ExampleModule.methods(false)
  #=> [:module_method] 
ExampleModule.singleton_class.instance_methods(false)
  #=> [:module_method]
ExampleModule.instance_methods(false)
  #=> [:normal_method]