我有一个台钟,我想用它存储一些事情要发生的时间。可以同时发生多种事情,而且我对未来的设置没有严格的限制。
假设我希望操作a1在时间5发生。使用...
clock = {}
table.insert(clock[5], a1)
...将不起作用,因为未定义clock [5]并返回nil。因此,我创建了一个函数来检查表是否存在,并在插入值之前对其进行声明:
function insertNil(tab, val)
if tab == nil then tab = {} end
table.insert(tab, val)
return
end
调用insertNil(clock[5], a1)
也不起作用,因为函数中的tab
表指向与我需要修改的表不同(如果相同)的表,我不知道该怎么做可以直接在函数中使用我的表clock[5]
。
最后我想到了这个:
function insertNil(tab, val)
if tab == nil then tab = {} end
table.insert(tab, val)
return tab
end
clock[5] = insertNil(clock[5], a1)
这可以按照我想要的方式工作,但是感觉有点麻烦,我无法动摇有一个更简单的解决方案的感觉。
答案 0 :(得分:1)
更简单的方法是编写一个带有3个参数的函数。您必须将clock
传递给该函数,因为该函数有时需要对其进行修改。
local function addAction(clock, index, val)
-- If the table isn't already there, add it.
clock[index] = clock[index] or {}
-- Insert the value.
table.insert(clock[index], val)
end
clock = {}
addAction(clock, 5, a1)