lua 的元表和元表的__index字段

来源:互联网 发布:钢筋预算软件 编辑:程序博客网 时间:2024/04/28 00:53

众所周知,lua的继承是通过元表的__index字段来实现的,比如child类要继承自parent类,就需要把child的元表设为parent,并且要把child的元表(此时是parent)的__index字段进行设置才行。这里的设置可是是一个table,此table是任意的,不一定是父类,还可以设置为一个function。只有设置了元表的__index字段后,才是真正实现了继承,也就是在child中找不到属性或者方法,lua会从child的元表中去查找。

例子:

--例子1.只设置了元表,但是没有设置元表的__index字段
local parent = {}
parent.helloWorld = "hello World"
local child = {}
setmetatable(child, parent)
print(child.helloWorld)

 

如果加上了设置元表的__index字段,会实现了继承了:

直接看例子2:

--例子2.设置了元表,并且设置元表的__index字段
local parent = {}
parent.helloWorld = "hello World"
parent.__index = parent --设置__index字段
local child = {}
setmetatable(child, parent)
print(child.helloWorld)


 

1 0
原创粉丝点击