创建表并在其中插入值的函数

时间:2018-09-05 22:08:04

标签: lua

我有一个台钟,我想用它存储一些事情要发生的时间。可以同时发生多种事情,而且我对未来的设置没有严格的限制。

假设我希望操作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)

这可以按照我想要的方式工作,但是感觉有点麻烦,我无法动摇有一个更简单的解决方案的感觉。

1 个答案:

答案 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)