Код |
---|
function func(v) return v * v end s = { f = function(v) local r = s.r if not r then r = func(v) s.r = r end return r end } print(tostring(s.f(3))) print(tostring(s.f(3))) |
Функция s.f() запоминает вычисленное значение и при повторном обращении возвращает раннее вычисленное значение.
Можно ли описать её через setmetatable?
PS: возвращать она должна раннее сохранённое значение, независимо от переданного аргумента при повторном вызове.
Надо делать так, как надо. А как не надо - делать не надо.