列出由于需要文件而添加的方法、常量和 类
Listing the methods, constants, and classes added due to requiring a file
是否可以列出所有因为执行require 'set'
而可以使用的方法、常量、类等?
列出class的所有instance methods:
puts Set.instance_methods(false)
Set
class 没有定义任何 class 级别的方法,但是是否定义了,可以列出它们:
puts Set.methods(false)
将 no/truthy 参数传递给上述方法将导致打印出 all class 的方法,包括 derived 来自 superclasses.
mudasobwa 已经向您展示了如何列出 Set
中定义的方法。
添加一些东西:
要列出单例方法:
Set.singleton_methods # on Ruby 2.3 it returns few => [:[], :yaml_tag]
要列出常量,请使用:
Set.constants
要列出子类:
Set.subclasses # or Set.descendants
你可以,但它很老套,而且可能没有有效的方法。
一种方法是记录require
前后模块及其常量和方法的清单,并取差。可以通过以下方式列出模块:
ObjectSpace.each_object(Module).to_a
其中的常量可以通过以下方式列出:
ObjectSpace.each_object(Module)
.with_object([]){|m, a| a.concat(m.constants.map{|c| "#{m}::#{c}"})}
你可以用方法做类似的事情。 require
前后都这样做,取差
是否可以列出所有因为执行require 'set'
而可以使用的方法、常量、类等?
列出class的所有instance methods:
puts Set.instance_methods(false)
Set
class 没有定义任何 class 级别的方法,但是是否定义了,可以列出它们:
puts Set.methods(false)
将 no/truthy 参数传递给上述方法将导致打印出 all class 的方法,包括 derived 来自 superclasses.
mudasobwa 已经向您展示了如何列出 Set
中定义的方法。
添加一些东西:
要列出单例方法:
Set.singleton_methods # on Ruby 2.3 it returns few => [:[], :yaml_tag]
要列出常量,请使用:
Set.constants
要列出子类:
Set.subclasses # or Set.descendants
你可以,但它很老套,而且可能没有有效的方法。
一种方法是记录require
前后模块及其常量和方法的清单,并取差。可以通过以下方式列出模块:
ObjectSpace.each_object(Module).to_a
其中的常量可以通过以下方式列出:
ObjectSpace.each_object(Module)
.with_object([]){|m, a| a.concat(m.constants.map{|c| "#{m}::#{c}"})}
你可以用方法做类似的事情。 require
前后都这样做,取差