多层嵌套调用令人眼花缭乱:f3(f2(f1(...)))
现在换一种写法:procedure{f3,f2,f1}(...)
对于流程复杂的调用来说这非常有用。
先上代码:
--@Ability: -- linearization nesting calling,just as "f3(f2(f1(...)))",to "procedure{f1,f2,f3}(...)". --@Example: -- local function addkv(t,k,v) --add a kv-pair into a table -- t[k] = v -- return t -- end -- local proc = procedure{ -- bind(addkv,_1,"name","leo"), -- bind(addkv,_1,"age",18), -- bind(addkv,_1,"role","warrior"), -- } -- dump(proc{ -- type = "player" -- }) function procedure(_funclist) return function(...) local ret = ... for k,func in pairs(_funclist) do ret = func(ret) end return ret end end
说明:
procedure往往要配合bind使用,bind的实现参考我写的上一篇。