我确信这将是一个简单的搜索问题,但我找不到任何有用的东西。
我想通过点击 ESC 退出循环。
name = " "
while name > "" do
puts "(press enter (only) or ESC-key to exit)"; puts {"/n"}
print "Enter name: "
name = gets.chomp
end
我需要添加代码,允许用户点击 ESC 键取消输入。
我使用RubyMine,并注意到在控制台窗口中按 ESC 会将光标发送到代码窗口。我不确定这是否会导致测试任何解决方案的问题。
答案 0 :(得分:1)
当您致电gets
时,另一个图书馆接管。当用户点击 Enter 时,在gets
返回之前,您无法控制。
您必须编写自己的gets
功能,以便在转义时退出:
require 'io/console'
def mygets()
char = ''
name = ''
while 1 do
char = STDIN.getch
if char.ord == 27
return '' #depending on you want to do in this case
end
if char.ord == 13
return name
end
print char
name = name + char
end
end
print "(press enter (only) or ESC-key to exit)\n"
print "Enter name: "
print "\n" + mygets()