[lua]实现一个js.bind玩玩

  今天微博上有人发一个帖子,可以用js来函数式编程.

  比如:

function f(x, y, z) {
    return x + y + z;
}

var f1 = f.bind(null, 1);
f1(2,3) === 6;

  看完之后,我表我们lua也能实现这样的效果.

  

function bind(f,...)
    local args={...}
    return function(...)
    local local_arg={...}
        local arg = {}
        for _,v in pairs(args) do table.insert(arg, v) end
        for _,v in pairs(local_arg) do table.insert(arg,v) end 
        return f(unpack(arg)) 
     end
end

function f(x,y,z)
    return x+y+z
end

local f1 = bind(f,1)
print(f1(2,3)) //will print 6

 调试了好长时间......

原帖:

http://slid.es/gsklee/functional-programming-in-5-minutes

/**********************************************************************
 * 机械教条主义
 *
 * From:          http://www.cnblogs.com/egmkang/
 * Email:          egmkang [at] outlook.com
 * Weibo:        http://weibo.com/egmkang
 * Github:       http://github.com/egmkang
 *
 **********************************************************************/

原文地址:https://www.cnblogs.com/egmkang/p/3088824.html