gpt4 book ai didi

ruby:打开文件对象到标准输出

转载 作者:数据小太阳 更新时间:2023-10-29 07:26:47 27 4
gpt4 key购买 nike

我是 Ruby 的新手,我正在尝试打开一个指向 stdoutFile 对象。

我从this question知道将 stdout 重定向为指向 File 非常简单,但是如何将 File 重定向为指向 stdout

我正在编写程序,我正在考虑为用户提供将输出的部分 写入文件的选项。如果他们选择该选项,则所有输出都应写入stdout

看这个伪代码:

if output redirect option is selected
o = File.open('given filename','w')
else
o = File.open($stdout, 'w')
end

这是一个可能用例的伪代码:

puts 'Generating report for XYZ'
report = ReportGenerator::generateReport('XYZ')
o.puts report

如您所见,如果未指定输出重定向选项,我只希望 o 将报告放入 stdout。但是,“生成报告”消息仍然需要打印到 stdout,因此重定向 stdout 会很麻烦,尤其是因为我有更多的消息和更多的地方我(可能)在其中交替输出流。

o = File.open($stdout, 'w') 是我不确定的部分。

最佳答案

Ruby 的 $stdout 是一个 IO响应 puts 的实例,所以你可以这样写:

if output_redirect_option_is_selected
o = File.open('given filename','w')
else
o = $stdout.dup
end

dup-ing $stdout 允许您在不影响 $stdout 的情况下关闭 o:

o = $stdout.dup
o.close
puts 'bye' # works as expected

鉴于:

o = $stdout
o.close
puts 'bye' # raises IOError

关于ruby:打开文件对象到标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32074034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com