__index是metatable最常用的键。如果你通过键来访问一个table的时候,如果这个键没有值,Lua就会寻找该table的metatable中的__index键(前提是该table有metatable)。如果__index包含一个表格,Lua会在对应表格中查找对应的键。
Lua查找表中元素的规则是:
1.在表中查找,如果找到,返回该元素,找不到则继续。
2.判断该表是否有元表,如果没有元表,返回nil,有元表则继续。
3.判断元表有没有__index方法,如果__index方法为nil,则返回nil;如果__index方法是一个表,则重复1、2、3;如果__index方法是一个函数,则返回该函数的返回值。