У меня есть некоторый код
::redo::
io.write("input: ")
var = io.read("*n")
if var then
if var > 5 and var < 10 then io.write("yes\n") goto redo
else io.write("invalid\n") goto redo end
else io.write("invalid\n") goto redo end
, который должен проверять числовое входное значение и возвращать его, если он находится в определенном диапазоне.Если это не числовое значение, он должен «повторить» сценарий и снова запросить ввод.Проблема заключается в том, что всякий раз, когда он принимает ввод, который не является числом, он повторяет io.write("input: ")
и io.write("invalid\n")
, что означает, что он пропускает строку var = io.read("*n")
.Есть ли какой-то особый смысл или причудливость в io.read("*n")
, которая мешает ему переоценить?Код, кажется, работает, если заменить на io.read()