1 基本函数绑定
function func(a)
print(a)
end
function bind(func, ...)
return function(...)
func( ...)
end
end
f = bind(func)
f(1)
2 基于table表的构造绑定方式
a = {}
function a.init(data)
a.data = data
end
function a.func(self,t)
print(self.data)
end
function bind(self, func, ...)
return function(self, ...)
func( self ,...)
end
end
a.init(2)
f = bind(a, a.func)
f(a, 1)
3 基于类的构造绑定方式
a = {}
function a:new(data)
o = setmetatable({}, {__index = self})
self.data = data
return o
end
function a:func()
print(self.data)
end
function bind(self, func, ...)
return function(self, ...)
func( self ,...)
end
end
t = a:new(2)
f = bind(t, t.func)
f(t)
4 通用的接口格式
function func(self, a)
print(a)
end
function bind(self, func, ...)
return function(self, ...)
func(self, ...)
end
end
f = bind(nil, func)
f(nil, 2)