io.read被跳过Lua

时间:2015-06-08 21:50:32

标签: input io lua

我试着把计算器作为一个很好的第一个任务。虽然我遇到了io.read函数的问题。

这是我的代码

io.write("let's try making a calculator in LUA!\n\n")

io.write("First number?\n> ")
firstNum = io.read("*n")

io.write("Second number?\n> ")
secNum = io.read("*n")

io.write("Operator?\n>")
op = io.read()

--rest of code goes here--

它允许我输入firstNumsecNum,但一旦它到达op,它就会退出而没有错误。这是输出

➜ lua test.lua 
let's try making a calculator in LUA!!

First number?
> 10
Second number?
> 20
Operator?
>⏎

知道我在这里做错了吗?

1 个答案:

答案 0 :(得分:3)

原因是,在按 ENTER 键之前会读取一个数字。换行符仍在输入缓冲区中,然后由以下io.read()读取。

一个选项是阅读op直到它有效。例如,要跳过空格字符:

repeat op = io.read() until op:match "%S"

或者,只读一个标点字符:

repeat op = io.read() until op:match "%p"