1

「プット」と「プリント」の結果をキャッシュし、変数に保存する方法。のようob_start()にそしてob_get_contents()phpで。

4

2 に答える 2

2

一部の人々は、私がよく知らない ruby​​ 標準ライブラリの一部を利用した巧妙なソリューションを投稿するでしょう。私が提供できるのは、この小さな汚れたモンキー パッチ 1 つだけです。

module Kernel
  alias_method :old_puts, :puts

  def puts txt
    @cached_output ||= ''
    @cached_output += "#{txt}\n"
    old_puts txt
  end

  def cached_output
    @cached_output
  end
end

puts 'foo'
puts 'bar'
cached_output # => "foo\nbar\n"
于 2012-04-15T17:15:24.547 に答える
1
require 'stringio'

save_so, $stdout = $stdout, StringIO.new(' ', 'w')
puts 'how now brown cow'
my_so, $stdout = $stdout, save_so

p [:saved_result, my_so.string]
puts 'and this works once again'
于 2012-04-15T17:38:19.757 に答える