Jon*_*son 5 generics lua functional-programming
最近,Lee Baldwin展示了如何编写一个通用的,可变参数memoize函数.我认为返回一个只需要一个参数的简单函数会更好.这是我的全部伪造尝试:
local function memoize(f)
local cache = {}
if select('#', ...) == 1 then
return function (x)
if cache[x] then
return cache[x]
else
local y = f(x)
cache[x] = y
return y
end
end
else
return function (...)
local al = varg_tostring(...)
if cache[al] then
return cache[al]
else
local y = f(...)
cache[al] = y
return y
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
显然,select('#', ...)
在这种情况下失败并且无论如何都不会真正做我想做的事情.有没有办法告诉内部memoize有多少参数f期望?
如果你肯定知道,"不"是一个很好的答案.使用两个单独的memoize函数并不是什么大问题.
归档时间: |
|
查看次数: |
1174 次 |
最近记录: |