【发布时间】:2013-05-03 00:42:40
【问题描述】:
所以我在 Ruby 中工作,我的想法是不断地在自身上重新打印一组字符串,直到按下一个键。这是我的代码
frame =
"aaaa
bbbb
cccc
dddd"
thread = Thread.new do
while(true)
print frame
sleep(0.5)
end
end
thread.run
begin
system("stty raw -echo")
str = STDIN.getc
ensure
system("stty -raw echo")
end
thread.kill
当这段代码执行时,它会生成输出
aaaa
bbbb
cccc
ddddaaaa
bbbb
cccc
ddddaaaa
bbbb
cccc
ddddaaaa
bbbb
cccc
ddddaaaa
bbbb
cccc
dddd
显然,你会认为它应该产生
aaaa
bbbb
cccc
dddd
重复直到按下一个键,我不知道为什么它没有。想法?
【问题讨论】:
-
我强烈怀疑您可以将其简化为一个更简单的示例。此外,为了获得最佳帮助,您应该提供一个功能齐全的独立示例来展示问题,而不仅仅是重现它所需的代码子集。
-
对不起。这个想法是我在 ascii 中来回打印一系列帧,我可以在击键时停止。它有效,但它完全消除了任何帧中的任何换行符。我很快就会整理出一个更简单的例子。
-
查看我的“答案”,表明您所描述的似乎不是问题。你需要一个精简的测试用例,或者描述代码失败的操作系统和 Ruby 版本。
标签: ruby multithreading printing newline output