lua学习笔记16 table元表详解

                一 table本质
Lua中table本质实际上是个类似HashMap东西。
其元素是很多的Key-Value对,类似iOS中的字典NSDictionary。
如果尝试访问了一个表中并不存在的元素时,就会触发Lua的一套查找机制。
lua“面向对象”就是凭借这个机制实现的。

示例:
local tab = {}print(tab.key)

输出:nil

因为tab中没有任何元素,当然视图访问其key元素时就会找不到,所以返回nil。

二 元表metatable
元表,即元素列表,是table的一个备查找的元素列表;
当在table中找不到要访问的元素时,就会到它的元表中去查找。
table的元表我们可以通过函数setmetatable来设置。

示例:
BaseClass = { base = 1,}DerivedClass = { derived = 2,}setmetatable(DerivedClass, BaseClass)print(DerivedClass.base)

输出:
nil

已经设置了元表,还是找不到,这是为什么呢?往下看!



三 元方法__

你可能感兴趣的:(lua学习笔记16 table元表详解)