打印块的实际Ruby代码?

时间:2011-04-25 03:34:25

标签: 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

1 个答案:

答案 0 :(得分:8)

这个问题与:

有关 当我问这个清单中的第一个时,安德鲁建议我。通过使用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
}

在上面,请注意您必须在putsblock_to_s ... end)的参数周围添加括号,或使用{...}而不是{{1因为stackoverflow中反复讨论的连接强度。

这会给你:

do ... end

相当于原始块作为ruby脚本,但不是完全相同的字符串。