Lua - '结束'预期(关闭<eof>附近的'功能'),不要错过'结束'

Alc*_*ist 4 lua

我收到一个错误,说"结束"丢失了,但是我看了整个代码而没有看到它.

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
Run Code Online (Sandbox Code Playgroud)

这是错误:

lua: grid.lua:15: 'end' expected (to close 'function' at line 3) near <eof>
Run Code Online (Sandbox Code Playgroud)

Kei*_*son 5

掉落dofunction线.你有一个end匹配的function,但没有匹配(不必要的)do.(实际上编译器认为end匹配do,然后在没有看到end函数的时候抱怨.)

函数体的语法是近似的

function name ( params opt)结束

(这个过于简单,请参阅Lua参考资料.)

A do不是必需的.如果它在那里,它不是函数体的语法的一部分,并且必须与相应的匹配end.