1

だから私は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

キーが押されるまで繰り返しますが、押されない理由がわかりません。考え?

4

1 に答える 1

2

次のコードは、改行の印刷を含め、期待どおりに機能します。正しく機能する場合は、問題の原因を誤って特定しています。

swivel = Thread.new do
  loop do
    print "Hello\nWorld"
    sleep 0.5
  end
end.run

puts "Press Enter to Stop"
str = STDIN.gets

swivel.kill

編集: を呼び出すstty raw -echoと、\n文字は 1 行だけ下に移動します。\r\n最初に行の先頭に移動し、次に次の行に移動する必要があり\nます。おそらくソースファイルは「unix行末」(\nのみ)で保存されているため、文字列に文字通り埋め込まれた改行では不十分です。

于 2013-05-03T02:11:39.550 に答える