我正在尝试编写一个简单的 ruby 函数,它可以提示用户输入一个值,如果用户自己按 ENTER,则使用默认值。在下面的示例中,可以通过单独按 ENTER 来处理对 Prompt 函数的第一次调用,并将使用默认值。但是,我第二次调用 Prompt 并按 ENTER 时,什么也没有发生,事实证明我必须在 ENTER 之前按其他字符才能从“获取”调用返回。
必须有某种方法来刷新输入缓冲区以避免这个问题。有谁知道该怎么做?
谢谢,
大卫
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