Lua - 'end' 期望 (在<eof>附近关闭 'function'),未见缺少 'end'

我得到一个错误,说缺少一个 'end',但我看了整个代码,没有看到。

local Grid = {}
Grid.__index = Grid
function Grid.new(w, h) do
    t = {}
    setmetatable(t,Grid)
    for i=1,w do
        t[i] = {}
        for j=1,h do
            t[i][j] = {i, j, nil}
        end
    end
    return t
end
Grid.__call = Grid.new
return Grid

这是错误信息:

lua: grid.lua:15: 'end' 期望 (在第3行关闭 'function'),在<eof>附近
点赞
用户827263
用户827263

function 行上的 do 删掉。你有一个与 function 匹配的 end,但是没有匹配(不必要的)do。 (实际上编译器认为 enddo 匹配,然后当没有看到函数的 end 时就会抱怨。)

函数体的语法大约如下:

function name ( paramsopt ) block end

(这是过于简化了,有关详细信息请参阅 Lua 参考手册。)

do 不是必需的。如果出现了,它不是函数体语法的一部分,并且必须与相应的 end 匹配。

2016-09-13 18:55:29