lua中self的作用

self其实就相当于Java,C++中的this对象,我们看代码:

a = {x = 3, y = 4}

a.__index = function(table, key)
				print("__index")
				return a[key]
			end
	--注:
	--冒号,在定义的时候省略掉了self
	--点,在定义的时候不省略self
--[[ 
function a.new(self, o)
	o = o or {}
	print("new")
	setmetatable(o, self)
	return o
end
]]

function a.new(o)
	o = o or {}
	print("new")
	setmetatable(o, a)
	return o
end

--上下两种写法是等价的
			
local b = a:new() --调用可以等价于a.new(a, {})

print(getmetatable(b))
			
print(b.x)


你可能感兴趣的:(lua中self的作用)