p = Proc.new{ puts 'ok' }
Run Code Online (Sandbox Code Playgroud)
有可能在proc中看到ruby代码吗?
inspect 返回内存位置:
puts p.inspect
#<Proc:0x007f9e42980b88@(irb):2>
Run Code Online (Sandbox Code Playgroud)
Ruby 1.9.3
这可能吗?
def block_to_s(&blk)
#code to print blocks code here
end
puts block_to_s do
str = "Hello"
str.reverse!
print str
end
Run Code Online (Sandbox Code Playgroud)
这将打印终端的跟随:
str = "Hello"
str.reverse!
print str
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何从Proc对象中提取代码?
将proc或方法对象转换为源字符串的最佳方法是什么?到目前为止,我尝试了两种方法.一个是实现proc的源位置并读取该部分源代码.另一种是使用库巫师和开膛手.我不确定这样做的正确方法是什么.什么是最好的可能取决于各种因素:稳健性,对原始的忠诚度,速度等.包括我建议的方法,但不限于它们,请建议一个策略,并评估其局限性.