是否可以列出因执行require 'set'
而可以使用的所有方法,常量,类等?
答案 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