Lua基本问题-嵌套在for循环中的if语句

时间:2018-09-19 17:28:57

标签: lua

我是Lua的业余爱好者,我写了这段代码但未能编译,我检查了语法的结构,发现这是一个匹配项,所以我真的不知道出什么问题了,它说 18:预计在“ startFishing”附近的“ end”(在第16行关闭“ if”) 但是我为什么要那样做? BTW startFishing是我先前在同一文件中定义的另一个功能。

function detectSuccess()
    local count = 0;
    for x = 448, 1140, 140 do
        color = getColor(x, 170);
        if color == 0xffffff then 
            return false
            startFishing()
        else
            return true
        end
    end
end

2 个答案:

答案 0 :(得分:6)

我们正确设置了代码格式....

function detectSuccess()
   local count = 0;
    for x = 448, 1140, 140 do
        color = getColor(x, 170);
        if color == 0xffffff then 
            return false
            startFishing()
        else
            return true
        end
    end
end

detectSuccess()

startFishing()语句悬空。从句法上讲,返回之后唯一可以发生的是else或end。

那是lua解析器的抱怨。

来自lua : programming in lua 4.4

  

出于语法原因,中断或返回只能显示为块的最后一条语句(换句话说,显示为块中的最后一条语句,或者恰好是结尾处的最后一条语句,否则或直到)。

如果要调用startFishing,则必须在返回之前。例如

function detectSuccess()
   local count = 0;
    for x = 448, 1140, 140 do
        color = getColor(x, 170);
        if color == 0xffffff then 
            startFishing() -- moved before the return
            return false
        else
            return true
        end
    end
end

答案 1 :(得分:4)

return之后的同一块中不能包含语句。我猜你的意思是:

if color == 0xffffff then 
   startFishing()
   return false
else
   return true
end

缩进代码将帮助您查看语法问题。