我试图在红宝石中做一个循环,每秒显示一个数字+ 1。我喜欢用户能够在他想要的时候输入。问题是我必须为循环输入一些内容才能继续。对不起,我的英语很糟糕。
p.s im使用在线编译器(repl.it)
答案 0 :(得分:2)
您可以使用线程和一些简单的状态变量来完成您想要的任务,以便在线程之间进行通信。
在这个例子中,当结束计数循环时,我们使用变量@stop
从主线程向计数线程发出信号。
此示例直接在repl.it上运行:
https://repl.it/repls/RingedIlliterateEnglishsetter
希望这能为您提供一些如何进行的建议。
@stop = false
thr = Thread.new {
puts "Counting thread starting..."
i = 0
loop {
i += 1
puts i
sleep 1
break if @stop
}
puts "Counting thread exit..."
}
loop {
puts "\nWaiting for input...\nType 'stop' to exit..."
input = gets.chomp
if input == "stop"
puts "Stopping..."
@stop = true
break
end
}
# Wait for counting thread to end
thr.join
puts "Main program exit..."