ruby/irb获取方法的作用域信息

ruby/irb获取方法的作用域信息,ruby,reflection,c,Ruby,Reflection,C,IRB能告诉我类/对象/变量/方法的范围吗 例如,放置 我想象着类似于descripe put的东西会输出信息,即put是对象的一种方法,可能是它的源所在地。对于内核/对象上定义的方法,可以简单地使用: method :puts #⇒ #<Method: Object(Kernel)#puts> 一旦有了方法,就可以调用method.owner来获取类。在本例中,method.owner将返回Kernel@mudasobwa,感谢URI提示。我发现我可以使用这个策略获得一个Met

IRB能告诉我类/对象/变量/方法的范围吗

例如,
放置


我想象着类似于
descripe put
的东西会输出信息,即put是对象的一种方法,可能是它的源所在地。

对于
内核
/
对象
上定义的方法,可以简单地使用:

method :puts
#⇒ #<Method: Object(Kernel)#puts> 

一旦有了方法,就可以调用
method.owner
来获取类。在本例中,
method.owner
将返回
Kernel
@mudasobwa,感谢URI提示。我发现我可以使用这个策略获得一个Method对象。一个问题:我没有看到URI方法的文档。你能解释一下它是怎么工作的吗?我也可以对类/实例这样做吗?它是对象、模块甚至内核的方法。使用此技术通过
URI.method(:method)发现它
:)一个
irb
替代方案也有很好的方法,比如
show method
,它将输出文件位置和方法body@engineersmnky还是只针对ruby本身编写的方法:)@mudasobwa请解释一下?它对核心方法不起作用,用C.@mudasobwa not true编写
show method puts
outputs“From:io.C(C method):所有者:内核可见性:私有行数:8个静态值rb_puts(int argc,VALUE*argv,VALUE recv){if(recv==rb_stdout){返回rb_io_puts(argc,argv,recv);}返回rb函数2(rb_stdout,rbu intern(“puts”),argc,argv);}”
Integer.instance_method :to_s
#⇒ #<UnboundMethod: Integer#to_s> 
URI.method(:split).source_location
#⇒ ["/path_to_ruby/uri/common.rb", 192]