lua中__index是面向对象非常基础一个知识
没有__index举例:
father = {
house=1
}
son = {
car=1
}
setmetatable(son, father) --son metatable设为father
print(son.house)
结果:nil
有__index的例子:
father = {
house=1
}
father.__index = father -- 把father的__index方法指向自己
son = {
car=1
}
setmetatable(son, father)
print(son.house)
结果:1
1.在表中查找,如果找到,返回该元素,找不到则继续
2.判断该表是否有元表,如果没有元表,返回nil,有元表则继续
3.判断元表有没有__index方法,如果__index方法为nil,则返
回nil;如果__index方法是一个表,则重复1、2、3;如果__index方法是一个函数,则返回该函数的返回值