Lua: 运行 代码等待输入

Lua: run code while waiting for input

我目前正在研究一个 lua 项目。 我想在 Minecraft 中使用名为 "OpenComputers" 的 mod,它允许在模拟系统上使用 lua 脚本。 我正在处理的程序相对简单:您有一个控制台,然后输入一个命令来控制一台机器。 它看起来像这样:

while(true) do
  io.write("Enter command\n>")
  cmd = io.read()
  -- running code to process the command
end

但问题是:我需要一个后台例程运行来检查机器提供的数据。

while(true) do
  -- checking and reacting
end

我怎样才能完成这项工作?

我对 lua 比较陌生,所以请尝试提供一个简单的解决方案,并且 - 如果可能的话 - 一个不依赖第三方工具的解决方案。

谢谢:)

运行多任务是操作系统解决的一个非常广泛的问题,而不是Lua解释器这么简单的问题。它在比 io.read 更深的层次上得到解决,并且处理的问题足以填满几本书。对于luavm而不是物理计算机,它可能更简单,但仍然需要深入研究代码字母如何转化为计算机执行的操作。

您的 mod 似乎已经为您模拟了 os 功能:1,2。我相信你会更好地利用提供的功能。

如果您有一些使用开放计算机的经验,您可以为“key_down”添加一个(异步)侦听器,并将用户输入存储在一个字符串(或任何您想要的)中。

例如:

local userstr = ""
function keyPressed(event_name, player_uuid, ascii)
    local c = string.char(ascii)
    if c=='\n' then
        print(userstr)
        userstr = ""
    else
        userstr=userstr..c
    end
    --stores keys typed by user and prints them as a string when you press enter
end

event.register("key_down", keyPressed)