[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

posted @ 2013-05-20 16:37  egmkang  阅读(...)  评论(... 编辑 收藏