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

    添加时间:2013-5-20 点击量:

      今天微博上有人发一个帖子,可以用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.(arg, v) end
    for _,v in pairs(local_arg) do table.(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(23)) //will print 6


     调试了好长时候......


    原帖:


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

    所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
    分享到: