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的作用,并对比了Java、C++中this关键字的功能。同时,还展示了如何使用Lua实现面向对象编程,包括构造函数的定义以及元表的设置。
7072

被折叠的 条评论
为什么被折叠?



