【发布时间】:2011-04-25 03:34:24
【问题描述】:
这可能吗?
def block_to_s(&blk)
#code to print blocks code here
end
puts block_to_s do
str = "Hello"
str.reverse!
print str
end
这会将以下内容打印到终端:
str = "Hello"
str.reverse!
print str
【问题讨论】:
标签: ruby
这可能吗?
def block_to_s(&blk)
#code to print blocks code here
end
puts block_to_s do
str = "Hello"
str.reverse!
print str
end
这会将以下内容打印到终端:
str = "Hello"
str.reverse!
print str
【问题讨论】:
标签: ruby
这个问题与:
当我问这个列表中的第一个时,安德鲁建议我。通过使用 gem 'sourcify',您可以获得接近块的东西,但不完全相同:
require 'sourcify'
def block_to_s(&blk)
blk.to_source(:strip_enclosure => true)
end
puts block_to_s {
str = "Hello"
str.reverse!
print str
}
在上面,请注意,您必须在 puts (block_to_s ... end) 的参数周围加上括号,或者使用 {...} 而不是 do ... end,因为所讨论的连接强度在stackoverflow中重复。
这会给你:
str = "Hello"
str.reverse!
print(str)
这相当于原来的块作为一个ruby脚本,但不是完全相同的字符串。
【讨论】:
method_source gem(并且您需要在一个文件中,这对我来说不适用于 irb)