lua终结多层嵌套调用

多层嵌套调用令人眼花缭乱: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的实现参考我写的上一篇。

转载于:https://www.cnblogs.com/leosfly/p/7734235.html

你可能感兴趣的:(lua终结多层嵌套调用)