首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Proc对象中提取代码?

如何从Proc对象中提取代码?
EN

Stack Overflow用户
提问于 2011-01-27 07:48:29
回答 4查看 8.8K关注 0票数 20

给定一个Proc对象,可以查看其中的代码吗?

例如:

代码语言:javascript
复制
p = Proc.new{test = 0}

我需要的是通过某种方式从已经创建的Proc对象中获取字符串"test = 0“。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-27 08:10:45

您可以使用ruby2ruby库:

代码语言:javascript
复制
>> # tested with 1.8.7
>> require "parse_tree"
=> true
>> require "ruby2ruby"
=> true
>> require "parse_tree_extensions"
=> true
>> p = Proc.new{test = 0}
>> p.to_ruby
=> "proc { test = 0 }"

您还可以将proc的字符串表示形式转换回ruby,并将其调用:

代码语言:javascript
复制
>> eval(p.to_ruby).call
0

有关ruby2ruby的更多信息,请访问以下视频:Hacking with ruby2ruby

票数 15
EN

Stack Overflow用户

发布于 2011-01-28 00:10:41

如果你使用的是Ruby1.9,你可以使用the sourcify gem

代码语言:javascript
复制
$ irb
ruby-1.9.2-p0 > require 'sourcify'
             => true 
ruby-1.9.2-p0 > p = Proc.new{test = 0}
             => #<Proc:0xa4b166c@(irb):2> 
ruby-1.9.2-p0 > p.to_source
             => "proc { test = 0 }" 
票数 13
EN

Stack Overflow用户

发布于 2011-01-27 07:54:32

使用proc.source_location获取定义过程的源文件的位置。它还返回定义的行号。您可以使用这些值来定位proc源的位置。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4811501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档