列出由于需要文件而添加的方法,常量和类

时间:2016-04-14 07:27:26

标签: ruby class module require

是否可以列出因执行require 'set'而可以使用的所有方法,常量,类等?

3 个答案:

答案 0 :(得分:1)

你可以,但它是黑客,而且可能没有有效的方法。

一种方法是在require之前和之后记录模块及其常量和方法的清单,并采取不同之处。可以通过以下方式列出模块:

ObjectSpace.each_object(Module).to_a

和其中的常量可以通过以下方式列出:

ObjectSpace.each_object(Module)
.with_object([]){|m, a| a.concat(m.constants.map{|c| "#{m}::#{c}"})}

你可以用方法做类似的事情。在require之前和之后执行此操作,并采取不同之处。

答案 1 :(得分:0)

列出班级的所有instance methods

puts Set.instance_methods(false)

Set类没有定义任何类级别的方法,但无论如何,都可以列出它们:

puts Set.methods(false)

将no / truthy参数传递给上述方法将导致打印出所有类的方法,包括来自超类的派生

答案 2 :(得分:0)

mudasobwa已经向您展示了如何列出Set中定义的方法。

添加一些东西:

列出单身方法:

Set.singleton_methods # on Ruby 2.3 it returns few => [:[], :yaml_tag]

要列出常量,请执行以下操作:

Set.constants

列出子类:

Set.subclasses # or Set.descendants