xlua 函数绑定和委托

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)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值