If statement WHILE循环仅在ELSEIF条件为true时开始

If statement WHILE循环仅在ELSEIF条件为true时开始,if-statement,file-io,lua,If Statement,File Io,Lua,我是lua的新手,正在尝试编写一些代码,将信息发送到每个循环周期都会覆盖的文本文件。发送到文本文件的信息根据一个值的不同而不同,该值增加到一个特定的已知数字(本例中为3),然后以任何顺序减小到该数字以下 这就是我被困的地方: 我想使用相同的值向文本文件发送不同的信息 但基于该值是否已达到3,如果 理智 英文示例: 如果值为2且未达到3,则写入:向上2 如果值为2且已达到3,则写下:向下2 如果值为3,则写入:TOP 我的问题: 当某个值满足特定的elseif条件时,是否可以在另一个无限whi

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

这就是我被困的地方:

我想使用相同的值向文本文件发送不同的信息 但基于该值是否已达到3,如果 理智

英文示例:

  • 如果值为2且未达到3,则写入:向上2
  • 如果值为2且已达到3,则写下:向下2
  • 如果值为3,则写入:TOP
我的问题:

当某个值满足特定的
elseif
条件时,是否可以在另一个无限while循环内部启动无限while循环。如果可能的话,我想尝试使用下面的循环结构

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

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

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

  • 使用
    =
    比较相等,而不是
    =
  • 对于每个
    if
    /
    elseif
    ,都应该有一个对应的
    然后
  • 对于每个
    if
    /
    /
    do
    块,应该始终有一个 相应的
    结束
至于你的问题,如果我理解正确,当你不想进入内部循环时,你可以使用
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