如何将控制台输出保存到Crystal中的字符串



在红宝石上我可以做

require "stringio"
def with_captured_stdout
  begin
    old_stdout = $stdout
    $stdout = StringIO.new('','w')
    yield
    $stdout.string
  ensure
    $stdout = old_stdout
  end
end

然后以后称其为

str = with_captured_stdout { Solution.main("Greetings from Javatlacati") }

,但是在水晶范围内,我可以参考全局变量$stdout,而无需获得相应的错误

$ global_variables不支持,使用@@ class_variables

有解决方法吗?预先感谢您。

当前没有简单的方法可以在Crystal Standard库中捕获Stdout或Stderr,但是这是一个看起来这样做的碎片:https://github.com/mosop/stdio。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<</p>

最新更新