puts "hi"
puts "bye"

到目前为止,我想将代码的STDOUT存储到一个变量中,比如'result',然后打印出来

puts result

我这样做的原因是,我已经将一个R代码集成到Ruby代码中,当R代码运行时,它的输出被提供给标准输出,但是输出不能在代码内部访问以进行一些计算.抱歉,这让人困惑.所以"puts result"一行应该给我打招呼,再见.

推荐答案

将标准输出重定向到StringIO对象

您当然可以将标准输出重定向到变量.例如:

# Set up standard output as a StringIO object.
foo = StringIO.new
$stdout = foo

# Send some text to $stdout.
puts 'hi'
puts 'bye'

# Access the data written to standard output.
$stdout.string
# => "hi\nbye\n"

# Send your captured output to the original output stream.
STDOUT.puts $stdout.string

实际上,这可能不是一个好主意,但至少现在你知道这是可能的.

Ruby相关问答推荐

VS Code Prettier 打破哈希访问

无法解析音频文件 track1.m4a

使用 Ruby,是否可以将 BigDecimal("1") / BigDecimal("3") 打印为 0.3333333333333... 到任意长度?

重写 Enum#inject 以在 Ruby 中将符号作为参数

如何使用 define_method 指定方法默认参数?

如何使用 Ruby 删除字符串中某个字符后的子字符串?

bundler 可以告诉我 Gemfile 中的哪些 gem 有更新的版本

用于 ruby​​ gems 的新 10.9 OSX 的命令行工具?

如何在Ruby中从字符串中go 除前导和尾随引号

有没有比 Rspec 的 `should_receive` 更少干扰的替代方法?

全新安装 RVM 和 Ruby 2.1.1 - dyld 库/路径错误

在 Ruby 中将数组转换为索引哈希

格式化 Ruby 的漂亮打印

用反斜杠单引号替换单引号

如何在 RSpec 2 中自动加载 spec_helper.rb

从类对象获取类位置

为什么 Ruby 没有真正的 StringBuffer 或 StringIO?

如何在 Ruby 中将类构造函数设为私有?

如何在Ruby中将字符串拆分为仅具有给定字符的两部分?

如何在 Capistrano v3 的服务器上运行 shell 命令?