Я пытаюсь написать простую функцию ruby, которая может запрашивать у пользователя значение, и если пользователь сам нажимает клавишу ВВОД, используется значение по умолчанию.
В следующем примере первый вызов функции Prompt может быть обработан нажатием клавиши ENTER, и будет использовано значение по умолчанию. Тем не менее, во второй раз, когда я вызываю Prompt и нажимаю ENTER, ничего не происходит, и оказывается, что мне нужно нажать какой-то другой символ, прежде чем ENTER, чтобы вернуться из вызова get.
Должен быть какой-то способ очистить входной буфер, чтобы избежать этой проблемы. Кто-нибудь знает, что делать?
Спасибо
David
def BlankString(aString)
return (aString == nil) ||
(aString.strip.length == 0)
end
#Display a message and accept the input
def Prompt(aMessage, defaultReponse = "")
found = false
result = ""
showDefault = BlankString(defaultReponse) ? "" : "(#{defaultReponse})"
while not found
puts "#{aMessage}#{showDefault}"
result = gets.chomp
result.strip!
found = result.length > 0
if !found
then if !BlankString(showDefault)
then
result = defaultReponse
found = true
end
end
end
return result
end
foo = Prompt("Prompt>", "sdfsdf")
puts foo
foo = Prompt("Prompt>", "default")
puts foo