Lua——3.元表Metatable

来源:互联网 发布:go并发编程实战 2017 编辑:程序博客网 时间:2024/05/20 18:41

lua中的__index域

__index可以指向一个表也可以指向一个方法

__index指向表:

之前我们需要知道,当我们在一个表中查找一个元素时
首先在该表中查找,有则返回对应值,无则查看该表是否有元表
若无元表则返回nil
有元表时,lua并不是在其元表中查找,而是在其元表的__index域中查找
因此:仅使用setmetatable()方法设置元表,并不能取得对应元表中的元素

BaseClass = {theKey1 = "the string value1"}DerivedClass = setmetatable({},BaseClass)res = DerivedClass.theKey1print(res)

设置对应元表的__index之后:

BaseClass = {theKey1 = "the string value1"}BaseClass.__index = BaseClassDerivedClass = setmetatable({},BaseClass)res = DerivedClass.theKey1print(res)

也可以换一种简写方法:

BaseClass = {theKey1 = "the string value1"}DerivedClass = setmetatable({},{__index = BaseClass})    --即直接设  AnonymousTable = {__index = BaseClass} 为DerivedClass的元表,查找时可直接在AnonymousTable中的__index域对应的表BaseClass中查找res = DerivedClass.theKey1print(res)

输出.PNG

__index指向一个方法

lua中的__add

//TODO 
原创粉丝点击