metatable 与 index 和 newindex Lua 中的每个值都可以有一个元表。这个元表就是一个普通的 Lua 表,它用于定义原始值在特定操作下的行为。 多个表和用户数据可以共享同一个元表。 index:索引 table[key]。当 table 不是表或是表 table 中不存在 key 这个键时,这个事件被触发。此时,会读出 table 相应的元
__index: 索引table[key]。当 table 不是表或是表 table 中不存在 key 这个键时,这个事件被触发。 此时,会读出 table 相应的元方法。 尽管名字取成这样, 这个事件的元方法其实可以是一个函数也可以是一张表。 如果它是一个函数,则以 table 和key 作为参数调用它。 如果它是一张表,最终的结果就是以 key...
【Lua __index元方法】 当你通过键来访问 table 的时候,如果这个键没有值,那么Lua就会寻找该table的metatable(假定有metatable)中的__index 键。如果__index包含一个表格,Lua会在表格中查找相应的键。 如果__index包含一个函数的话,Lua就会调用那个函数,table和键会作为参数传递给函数。 __index 元方法查看表中...
myNewTable = {} myNewTable[8] = "C" myNewTable[9] = "PHP" myNewTable[10] = "Python" --元表 元表扩展了普通表的行为 myMetatable ={ __index = myNewTable } mytable = setmetatable(mytable,myMetatable) --用来设置元表 --当访问普通表中的下标值时,可以访问的到,那么就返回对应值 pr...
一)table.getn 获取长度 相关于取长度操作符写作一元操作 #。 字符串的长度是它的字节数(就是以一个字符一个字节计算的字符串长度)。 对于常规的数组,里面从 1 到 n 放着一些非空的值的时候,它的长度就精确的为 n,即最后一个值的下标。 local tblTest1 = {1, a = 2,3} ...
当你通过键来访问 table 的时候,如果这个键没有值,那么Lua就会寻找该table的metatable(假定有metatable)中的__index 键。如果__index包含一个表格,Lua会在表格中查找相应的键。 我们可以在使用 lua 命令进入交互模式查看: $ lua Lua 5.3.0 Copyright(C)1994-2015Lua.org,PUC-Rio ...
在Lua中,我们可以实现一个table,来表示一个类,这个对象我们称为类对象,让他作为衍生对象的元表。比如: -- 类对象 Shape = { area = 0 } -- 基础类方法 new function Shape:new(o,side) o = o or {} setmetatable(o, self) self.__index = self ...
在Lua table中我们可以访问对应的key来得到value值,但是却无法对两个table进行操作。因此Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。通俗来说,元表就像是一个“操作指南”,里面包含了一系列操作的解决方案,例如__index方法就是定义了这个表在索引失败的情况下该怎么办,__add方...
当你访问table的元素时,也就是当你这么写:a1时,其实触发了index事件,然后我们在lua的文档里可以看到...