Всем привет! Задача такая: Нужно посчитать, сколько раз вызывается одна и та же функция с одним и тем же набором параметров (и перечислить их)
Переформулировка: допустим, есть функция, которая возвращает таблицу.
Код:
![Выделить весь код](images/misc/selectcode.png)
function make_obj(name, data)
return {name=name, data=foo(data)}
end
Нужно сделать так, чтобы она создавала эту таблицу ровно один раз для каждого набора параметров {name, data}. А если такой набор уже создан, то возвращала созданный ранее набор.
Т.е. нужно организовать такое кеширование.
Сейчас делаю так: завожу глобальную таблицу, индексируемую конкатенированными параметрами в виде строк:
Код:
![Выделить весь код](images/misc/selectcode.png)
_cache = {}
function make_obj(name, data)
local id, have_cache
id = string.format("%s %s", tostring(name), tostring(data))
have_cache = _cache[id]
if not have_cache then
have_cache = {name=name, data=foo(data)}
_cache[id] = have_cache
end
return have_cache
end
Есть ли способ кешировать проще?