当ELSEIF条件为真时开始WHILE循环。

我刚开始接触Lua,试图编写一些代码将信息发送到一个每个循环周期被覆盖的文本文件中。发送到文本文件中的信息根据一个逐渐增加到一个特定的已知数字(对于本例来说为3)然后以任何顺序降低的值而异。

以下是我卡住的地方:

我想使用相同的值,但根据该值是否达到3而将不同的信息发送到文本文件中。

英文示例:

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

我的问题:

当一个值满足特定的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()
           --如何触发/启动内部循环?
           while true do
           --现在在这里停留,直到跳出
           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
点赞
用户1009479
用户1009479

你的代码中有几个语法错误,它根本无法编译。

  • 使用 == 比较相等,而不是使用 =
  • 每个 if / elseif 都应该有相应的 then
  • 每个 if / while / do 代码块都应该有相应的 end

关于你的问题,如果我理解正确,你可以使用 goto 来模拟 continue,当你不想进入内部循环时:

while true do
    value = getValue()
    if value == 1 then
        --不进入内部循环
        goto continue
    elseif value == 2 then
        --进入内部循环
    end
    while true do
        --内部循环
    end
    ::continue::
end
2013-09-09 02:04:53