ユーザーに値の入力を求めることができる単純なルビ関数を作成しようとしています。ユーザーが単独で ENTER を押すと、デフォルト値が使用されます。次の例では、Prompt 関数の最初の呼び出しは、Enter キーを押すだけで処理でき、既定値が使用されます。しかし、2 回目に Prompt を呼び出して ENTER を押しても何も起こらず、'gets' 呼び出しから戻るには 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