| Код |
|---|
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: возвращать она должна раннее сохранённое значение, независимо от переданного аргумента при повторном вызове.
Надо делать так, как надо. А как не надо - делать не надо.