正如标题所说,如果用户按任意键,我想终止循环。 任何关键意味着如果用户只需按下键盘字母'A'而不是在'A'后按'enter',它应该终止无限循环。我做了很少的研究,发现使用Thread是解决这个问题的关键点。但是,由于我刚开始学习Ruby一周前,我根本不知道如何编写tbh。
Thread.new do
while user_input = STDIN.gets
break if user_input.chomp == true # dont know what to write here
end
end
loop do
random = random_number(0,1)
puts random
total = random + total
count += 1
sleep 1
end
这是我现在的代码,当然它不起作用.. 我需要帮助......(我担心Thread必须使用'Enter'来完成。就像当用户按'任意键'和'输入'时它终止循环..这不是我想要的那样。
答案 0 :(得分:0)
这里有两个问题。
gets
要求您在完成输入后按Enter键。您可以使用getch
模块中的io/console
方法解决此问题。break
从循环中逃脱,它不会杀死所有正在运行的循环。以下是一个非常简单的演示,说明了它的工作原理:
require 'io/console'
def echo_keyboard_input
loop do
char = STDIN.getch
puts char
break if char == 'q'
end
end
t = Thread.new { echo_keyboard_input }
t.join
此程序只会回复您输入的字符,一次一个,并在您键入“q”时退出。 (我的基础是this SO answer。)
然而,这是一个非常先进的事情,尝试这么少的经验;即使对于有经验的程序员来说,线程也很难处理。如果你真的想专注于其他事情,你可能想找到一个更容易的红宝石宝石。