WHILE循环仅在ELSEIF条件为真时开始

时间:2013-09-09 01:16:08

标签: if-statement file-io lua

我是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()
           --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

1 个答案:

答案 0 :(得分:1)

您的代码中存在多个语法错误,根本不应该编译。

  • 使用==比较平等而不是=
  • 对于每个if / elseif,应始终有相应的 then
  • 对于每个if / while / do块,应始终有一个 相应的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