Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Input Lua-可以在“停止”时停止输入;例如“睡眠”;她在跑步吗?_Input_Lua_Sleep - Fatal编程技术网

Input Lua-可以在“停止”时停止输入;例如“睡眠”;她在跑步吗?

Input Lua-可以在“停止”时停止输入;例如“睡眠”;她在跑步吗?,input,lua,sleep,Input,Lua,Sleep,我在互联网上找不到的基本信息: 我用于测试的小代码很简单: require("ex") a = true b = nil while (a == true) do b = io.read() ex.sleep(5) print(b) end 很简单。如果我输入“1”(我正在使用记事本++和windows命令提示符),它将等待5秒钟并打印,然后重复。但我的问题是。。。如果我在睡眠的5秒钟内输入更多的数字,那么当睡眠结束时,所有的数字都会按顺序自动执行 有可能阻止吗?我

我在互联网上找不到的基本信息: 我用于测试的小代码很简单:

require("ex")

a = true
b = nil

while (a == true) do
    b = io.read()
    ex.sleep(5)
    print(b)
end
很简单。如果我输入“1”(我正在使用记事本++和windows命令提示符),它将等待5秒钟并打印,然后重复。但我的问题是。。。如果我在睡眠的5秒钟内输入更多的数字,那么当睡眠结束时,所有的数字都会按顺序自动执行


有可能阻止吗?我不希望在此期间读取任何输入。这些“重影”输入存储在何处?

您可以通过“缓冲区大小”参数控制读取,以字节为单位:

b = io.read(1)
在这种情况下,读取在从输入中获取第一个字节后完成。Rest输入字节将可用于下一个“read”语句。 重要提示:如果输入“1”并按“Enter”,则将有3个字节用于读取(包括“\r\n”)

有关详细信息,请参阅

此外,您还想知道在下次读取之前清理输入缓冲区的方法。这很简单:使用io.read(“*行”)语句如下:

b = io.read("*line")  -- suppose, input is: "1234"
b = string.sub(b, 0, 1)
print(b)              -- prints 1

b = io.read("*line")  -- suppose, input is: "567"
b = string.sub(b, 0, 1)
print(b)              -- prints 5

b = io.read("*line")  -- suppose, input is: ""
b = string.sub(b, 0, 1)
print(b)              -- prints empty string

io.read(“*行”)从输入中获取整行内容,但您只能从中获取第一个字符。

这其实很好。但是我怎么能用它来解决我的问题呢?比如,“Rest输入字节将可用于下一个“read”语句”,就是这样,我不希望它可用。在调用io.read()之前是否可以清除任何输入?我已经扩展了这个案例的答案很抱歉再次打扰您,但是当我试图运行您的代码时,它被卡在了循环中。也许是因为我的卢阿?对不起。您有正确版本的Lua)。我对代码进行了修改,以显示更好的方式。