puts "hi"
puts "bye"
我想存储到目前为止代码的 STDOUT (在本例中 hi \nbye 到变量中说“结果”并打印它)
puts result
我这样做的原因是我已将 R 代码集成到我的 Ruby 代码中,当 R 代码运行时,其输出将提供给 STDOUT,但无法在代码内部访问输出以进行某些评估。抱歉,如果这令人困惑。所以“puts result”行应该给我打招呼和再见。
一个方便的函数,用于将标准输出捕获到字符串中......
以下方法是一个方便的通用工具,用于捕获 stdout 并将其作为字符串返回。 (我在单元测试中经常使用它,我想验证打印到标准输出的内容。)特别注意使用ensure
恢复 $stdout 的子句(并避免惊讶):
def with_captured_stdout
original_stdout = $stdout # capture previous value of $stdout
$stdout = StringIO.new # assign a string buffer to $stdout
yield # perform the body of the user code
$stdout.string # return the contents of the string buffer
ensure
$stdout = original_stdout # restore $stdout to its previous value
end
因此,例如:
>> str = with_captured_stdout { puts "hi"; puts "bye"}
=> "hi\nbye\n"
>> print str
hi
bye
=> nil
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)