如何使用ESC退出循环

时间:2016-01-25 23:36:12

标签: ruby loops exit rubymine

我确信这将是一个简单的搜索问题,但我找不到任何有用的东西。

我想通过点击 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 会将光标发送到代码窗口。我不确定这是否会导致测试任何解决方案的问题。

1 个答案:

答案 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()