我正在寻找一些StringIO - 类似的课程,这样我就能从课程的不同部分同时写作和阅读。
从程序的一部分我想写入(追加)字符到缓冲区,从另一部分我想读它们。
StringIO的问题如下:
buffer = StringIO.new
buffer.write "Foobar" # Write to the buffer
buffer.rewind # Move the pointer to beginning
buffer.getc #=> F
buffer.getc #=> o
buffer.write("something") # Write more to the buffer
buffer.string #=> Fosomething
buffer.getc #=> nil
buffer.pos #=> 11
每当我写入缓冲区时,它都会被写入当前位置。 Aterwards将位置移动到最后写入的字符。
我需要的是一个StringBuffer,它有两个独立的位置用于读写,而不是只有一个。在ruby中是否存在这样的事情,或者我自己必须做什么?
答案 0 :(得分:1)
您应该考虑使用Queue。如果你不需要线程安全,那么一个简单的数组也可能没问题。
答案 1 :(得分:0)
如果您的程序是单线程的,请尝试协程,也称为块。
def do_stuff
yield rand(100)
end
100.times do
do_stuff { |response| puts response }
end