我正在尝试创建一个函数,将在用户输入(例如或)前面打印的文本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
为真)。
我应该使用第一个代码,还是有办法改进第二个代码更“正确”?