io.write()在调用睡眠函数后未将内容写入控制台

我试图在Lua中创建一个简单的迭代输出系统。代码很容易理解。

function IterativeReader.read(Text)
    local Length = string.len(Text)

    for Pos = 1,Length do
        io.write(string.sub(Text,Pos,Pos))
        Sleep(ReaderSpeed)
    end

    for i = 1,NewlineCount do
        io.write("\n")
    end
end

你看,我需要使用io.write()函数,因为print()函数会自动创建新行,这并不是所需的行为。但是,当添加Sleep函数(如下所示)时,问题就会出现。使用繁忙的等待函数会导致相同的问题。

function Sleep(t)
  os.execute("sleep "..tonumber(t))
end

在完全经过全时间之后,会输出整个字符串。这个问题只与io.write()有关,因为它与print()一起使用就能正常工作。

点赞
用户7509065
用户7509065

当你只是使用 io.write(...) 时,输出是被缓冲的。在睡眠之前执行 io.flush() 强制输出被写入。

2021-04-05 05:24:45