関数 を作成しようとしていますgetInput(prompt, number)。ここpromptで、 はユーザーの入力の前に出力されるテキスト (例:>またはChoose a password:) でありnumber、入力が数値であるか任意のタイプであるかを示すブール値です。
ここに私が書いた関数があります:
function getInput(prompt, number)
if number then
while not input do
io.write(prompt)
input = tonumber(io.read())
end
else
io.write(prompt)
input = io.read()
end
return input
end
ただし、コードをかなり繰り返しています。私はio.write(prompt)2回書きましたがinput = io.read()、約1回tonumber()の呼び出しで2回書きました。私は基本的に同じことを 2 回繰り返してwhileいます。
ここに私が作った小さな回避策があります:
function getInput(prompt, number)
while not input do
io.write(prompt)
input = io.read()
if number then
input = tonumber(input)
end
end
return input
end
このバージョンは一度しか書かれていませんが、「適切な」コードではありませんio.write()。必要がなくてもループio.read()を使用しています( whenが false の場合)。また、ループのすべてのラウンドでチェックを行っています( trueの場合)。whilenumberif numberwhilenumber
最初のコードを使用する必要がありますか、または 2 番目のコードをより「適切」に改善する方法はありますか?