此问题已在此处有答案:
Printing the source code of a Ruby block(6个回答)
Ruby block to string instead of executing [duplicate](3个答案)
8年前关闭。
这可能吗?
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条答案
按热度按时间bvn4nwqk1#
这个问题涉及到:
1.在Ruby 2.0之前,可以使用
.to_source
方法.to_source
已被.source
取代1.使用gem 'sourcify',你可以得到一些接近块的东西,但不完全相同:
需要“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中反复讨论。这将为您提供:
这相当于原始的Ruby脚本块,但不是完全相同的字符串。
1.另请参阅method_source gem github.com/banister/method_source