Lua 期望使用 'end' 来结束 'if' 语句。

我在lua中有下面这段代码

function onMouseDown(event)
    print(event.x, event.y)
    if event.x>160 then
        print("what")
        return 1
        print("whatwhat")
    else
        return 0
        print("WhatWhatWhat")
    end

    fruit:setX(event.x)
    fruit:setY(event.y)
end

但它抱怨说main.lua:59:需要“结束”(在第56行关闭'if')附近的'print',因此它期望在下面的print("whatwhat")处有一个结束。但是如果我在那里放一个结束,它仍然抱怨我。

我对lua相当新,有点困惑,我通常在c#中编程。

点赞
用户2089198
用户2089198

我怀疑你的问题出在 return 后面的打印语句上。那是死代码;Lua 要求 return 在块的末尾。

2013-03-14 23:29:02
用户485561
用户485561

请参考 Lua 手册 §3.3.4 的说明:

return 语句只能作为块的最后一个语句编写。如果确实需要在块的中间返回,则可以使用显式的内部块,比如 do return end 这样的习语,因为此时 return 语句是其(内部)块的最后一个语句。

你的代码在 return 语句之后调用了 print,因此是无效的。

2013-03-14 23:35:51