У меня есть настольные часы, которые я хочу использовать для хранения времени, когда некоторые вещи должны быть выполнены. В одно и то же время может произойти несколько вещей, и у меня нет жестких ограничений на то, как далеко они будут установлены в будущем.
Допустим, я хочу, чтобы действие a1 происходило в момент 5. Использование ...
clock = {}
table.insert(clock[5], a1)
... не будет работать, так как часы [5] не определены и возвращают ноль. Поэтому я создал функцию, чтобы проверить, существует ли таблица, и объявить ее перед вставкой значения:
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)
Это работает так, как я хочу, но это кажется довольно громоздким, и я не могу избавиться от ощущения, что есть более простое решение.