[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(2,3)) //will print 6
 调试了好长时候......
原帖:
http://slid.es/gsklee/functional-programming-in-5-minutes
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
                     
                  
     
  
 
    
    
今天微博上有人发一个帖子,可以用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(2,3)) //will print 6
调试了好长时候......
原帖:
http://slid.es/gsklee/functional-programming-in-5-minutes
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》



