簡體   English   中英

Ruby:gets.chomp 1鍵

[英]Ruby: gets.chomp 1 keypress

我想提示用戶按ESC或任何其他鍵。 按ESC將停止所有進一步的動作。 按ENTER(或任何其他鍵),將執行其他操作。

按ENTER可以很好地工作,但是等待用戶實際按Enter。 使其不十分友好。

用戶按下1次鍵后,是否有繼續操作的方法?

puts "Press Enter to continue or ESC to quit..."
decision = gets.chomp

if decision != "^["
    then puts "do this stuff"
else
    puts "bye"
end

我相信您幾乎不了解自己在做什么。 首先,這取決於您使用的操作系統。 我知道沒有一種“標准”機制適用於所有操作系統。

次要的,與字符串的比較,包含兩個字符'^''['與對ESC的檢查完全不同。

最后但並非最不重要的:除非按⏎,否則get gets緩沖輸入。 讀取一個char所需的是IO#getc

這是unix控制台的工作代碼:

puts "Press Enter to continue or ESC to quit..."
begin
  system("stty raw -echo")
  decision = STDIN.getc
ensure
  system("stty -raw echo")
end

if decision.ord != 27
  puts "do this stuff"
else
  puts "bye"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM