学到lua 的__call时,不是很理解字面上的东西,
做了以下几个实例来研究__call
local event = {}
event.__call = function(self,index)
print(index)
end
local test = {}
setmetatable(test,event)
test(3)
结果是3
local event = {}
event.__call = function(self)
print(self.a)
end
local test = {a=1}
setmetatable(test,event)
test(3)
结果是1
local event = {a=1}
event.__call = function(self)
print(self.a)
end
local test = {}
setmetatable(test,event)
test(3)
结果是nil
local event = {}
event.__call = function(self,index)
return index+1
end
local test = {}
setmetatable(test,event)
print(test(4))
结果是5
总之就是test继承了event的一个方法,只要以函数形式调用test就会调用那个方法,传入的self是test自身的表,不是元表event的表,然后第二个参数则是传入的参数