我正在尝试创建一个函数,将在用户输入(例如或)前面打印的文本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)写了两次,我也写了两次,input = io.read()其中tonumber()一个电话。我基本上只是重复同样的事情两次,一次在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()但它不是那个“正确”的代码。while即使不需要(何时number为假) ,我也在使用循环。我还在if number检查每一轮while循环(何时number为真)。
我应该使用第一个代码,还是有办法改进第二个代码更“正确”?