'insert' 的错误参数 #1(table 预期,结果为零)love2d lua 中的错误
bad argument #1 to 'insert' (table expected, got nil) error in love2d lua
当我尝试 运行 我的 lua 脚本时,我一直收到错误消息。
错误是:'insert' 的参数 #1 错误(预期 table,结果为零)
这是我的游戏循环代码:
local GameLoop = {}
local insert = table.insert
local remove = table.remove
function GameLoop:create()
local gameLoop = {}
function gameLoop:addLoop(obj)
insert(self.clocks,obj)
end
function gameLoop:update(dt)
for clocks = 0,#self.clocks do
local obj = self.clocks[clocks]
if obj ~= nil then
obj:tick(dt)
end
end
end
return gameLoop
end
return GameLoop
根据您显示的代码,您的 gameLoop
表不包含 clocks
成员,因此您实际上是将 nil
传递给 [=15= 的第一个参数].
简单的解决方法是添加该成员。
local gameLoop = { clocks = {} }
顺便说一句,使用元表编写这种类型的结构通常更好,因为它减少了函数重复。
local insert, remove =
table.insert, table.remove
local GameLoop = {}
GameLoop.__index = GameLoop
function GameLoop:create ()
return setmetatable({
clocks = {}
}, self)
end
function GameLoop:addLoop (obj)
insert(self.clocks, obj)
end
function GameLoop:update (dt)
for _, clock in ipairs(self.clocks) do
obj:tick(dt)
end
end
return GameLoop
当我尝试 运行 我的 lua 脚本时,我一直收到错误消息。 错误是:'insert' 的参数 #1 错误(预期 table,结果为零)
这是我的游戏循环代码:
local GameLoop = {}
local insert = table.insert
local remove = table.remove
function GameLoop:create()
local gameLoop = {}
function gameLoop:addLoop(obj)
insert(self.clocks,obj)
end
function gameLoop:update(dt)
for clocks = 0,#self.clocks do
local obj = self.clocks[clocks]
if obj ~= nil then
obj:tick(dt)
end
end
end
return gameLoop
end
return GameLoop
根据您显示的代码,您的 gameLoop
表不包含 clocks
成员,因此您实际上是将 nil
传递给 [=15= 的第一个参数].
简单的解决方法是添加该成员。
local gameLoop = { clocks = {} }
顺便说一句,使用元表编写这种类型的结构通常更好,因为它减少了函数重复。
local insert, remove =
table.insert, table.remove
local GameLoop = {}
GameLoop.__index = GameLoop
function GameLoop:create ()
return setmetatable({
clocks = {}
}, self)
end
function GameLoop:addLoop (obj)
insert(self.clocks, obj)
end
function GameLoop:update (dt)
for _, clock in ipairs(self.clocks) do
obj:tick(dt)
end
end
return GameLoop