仅在模块中列出方法?

时间:2010-07-29 11:52:09

标签: ruby

我想知道如何列出模块中的所有方法,但不包括继承的方法。

例如

module Software
  def exit
    puts "exited"
  end
end

puts Software.methods

不仅列出退出,而且列出所有继承的方法。

是否可以列出退出?

由于

2 个答案:

答案 0 :(得分:45)

实际上Software.methods 列出exitSoftware.instance_methods将列出exit以及任何继承的方法(在这种情况下,这些方法都没有,因为除非包含另一个模块,否则模块不会继承任何方法)。 Software.instance_methods(false)只会列出Software中定义的方法。

答案 1 :(得分:23)

Software.public_instance_methods

似乎适用于您的示例。