我收到一条错误消息,说“结束”丢失了,但是我看了整个代码而没看到它。
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' expected (to close 'function' at line 3) near <eof>
答案 0 :(得分:5)
将do
放在function
行。您有end
与function
匹配,但没有匹配(不必要的)do
。 (实际上,编译器认为end
与do
匹配,然后在没有看到end
函数时抱怨。)
函数体的语法大致是
function
name(
params opt ) block end
(这是过于简单的,请参阅the Lua reference了解详情。)
不需要do
。如果它在那里,它不是函数体语法的一部分,必须与相应的end
匹配。