0

我是 lua 的新手,我正在尝试编写一些代码来将信息发送到文本文件,该文本文件在每个循环周期都会被覆盖。发送到文本文件的信息根据增加到特定已知数字的值(3对于此示例),然后以任何顺序减少到该数字以下。

这是我卡住的地方:

我想使用相同的值向文本文件发送不同的信息,但基于值是否达到 3,如果这有意义的话。

英文示例:

  • 如果值为2且未达到 3,则写入:UP 2
  • 如果值为2并且已达到 3,则写入:DOWN 2
  • 如果值为3,则写入:TOP

我的问题:

当一个值满足特定条件时,我可以让一个无限 while 循环在另一个 无限 while 循环内开始吗?elseif如果可能,我想尝试使用下面的循环结构。

我的代码看起来有点像这样:

while true do
    file = assert(io.open("file.txt","w+"))
    value = ipc.readSD(0x0BE8)
       if value = 0
       file:write("UP 0")
       file:close()
       elseif value = 1
       file:write("UP 1")
       file:close()
       elseif value = 2
       file:write("UP 2")
       file:close()
       elseif value = 3
       file:write("TOP")
       file:close()
           --How do I trigger/start this inner loop?
           while true do
           --now stay in here until break
           file = assert(io.open("file.txt","w+"))
           value =  ipc.readSD(0x0BE8)
                  if
                        value = 0
                        file:write("DOWN 0")
                        file:close()
                        break
                  elseif
                        value = 1
                        file:write("DOWN 1")
                        file:close()
                  elseif
                        value = 2
                        file:write("DOWN 2")
                        file:close()
                  else
                        break
       else
       file:write("OUTSIDE")
       end
end
4

1 回答 1

1

您的代码中有几个语法错误,它根本不应该编译。

  • 用于==比较相等而不是=
  • 对于每个if/ elseif,应该总是有一个对应的 then
  • 对于每个if//块whiledo应该总是有一个对应的end.

至于您的问题,如果我理解正确,您可以在不想进入内循环时使用goto模拟:continue

while true do
    value = getValue()
    if value == 1 then
        --not enter inner loop
        goto continue
    elseif value == 2 then
        --enter inner loop
    end
    while true do
        --inner loop
    end
    ::continue::
end
于 2013-09-09T02:04:53.323 回答