関数 を作成しようとしています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の場合)。while
number
if number
while
number
最初のコードを使用する必要がありますか、または 2 番目のコードをより「適切」に改善する方法はありますか?