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

我是Lua的菜鸟,我写了这个代码却无法编译,我检查了语法的结构,发现它是匹配的,所以我真的不知道哪里出了问题。错误提示是: 18:期望 'end'(关闭第16行的'if')附近的'startFishing', 但为什么我要这样做??? 顺便说一句,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
点赞
用户107090
用户107090

你不能在 return 后面的同一个块中写语句。我猜你的意思是这样的:

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

缩进你的代码有助于发现语法问题。

2018-09-19 17:32:31
用户5129715
用户5129715

格式正确的代码如下:

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() 语句没有放置在正确的位置。根据语法规则,return 后面只能跟 elseend

这是 Lua 解析器的抱怨。

来自 lua:Programming in Lua 4.4:

因为语法原因,breakreturn 只能出现在块的最后一个语句中(换句话说,它们只能出现在代码块的最后一行,或在 endelseuntil 的前一行)。

如果你想要调用 startFishing,它需要放在 return 之前。例如:

function detectSuccess()
   local count = 0;
    for x = 448, 1140, 140 do
        color = getColor(x, 170);
        if color == 0xffffff then
            startFishing() -- 移至 return 的前一行
            return false
        else
            return true
        end
    end
end
2018-09-19 17:33:52