一、相关介绍请参考:Lua中__index原方法介绍

二、使用示例

代码如下

下面示例使用的元素迭代器

--1.列表元素迭代器,仅返回列表中每一个元素,改列表索引必须为连续的数字
function listIterator(list)
local index = 0;
local listLen = #list
return function ()
index = index + 1
if index <= listLen then
return list[index]
end
end
end
--当作这是一个类
paramentClass = {id = "1", num = 1}
function paramentClass:new(obj, objId, objNum)
obj = obj or {} --如果初始化对象为空,创建一个新的表
setmetatable(obj, self) --设置元表,相当于定义结构,指定表地址
--(1)设置默认域,相当于设置结构中成员的默认值;
--(2)这里self是隐藏的第一参数,代表调用方法的自身,这里就是元表paramentClass这个表
--(3)所以这里可以写成paramentClass.__index = paramentClass
self.__index = self
self.id = objId
self.num = objNum
return obj
end --当作这是一个表
operationList = {}
function operationList:add(oId, onum)
table.insert(self, paramentClass:new(nil, oId, onum))
end
function operationList:add2(oId, onum)
table.insert(self, {id = oId, num = onum})
end --下面是向表operation中插入数据及输出结果
operationList:add("test1", 100)
operationList:add2("test2", 200)
operationList:add("test3", 300) --这里同时修改了“test1”的值
for thisoL in listIterator(operationList) do
print("this ID is "..thisoL.id.."\nthis Num is "..thisoL.num)
end

输出结果:

注:值得注意的是,在上述示例中,我们通过示例的输出可以看到,当我们多次修改paramentClass的值,那么之前paramentClass也会随之改变,这是因为paramentClass的元地址始终都是指向本身,这里可以理解为系统内存中只分出了一个用于存放paramentClass值的地址,所以无论我们怎么重复调用修改,远了引用到paramentClass的值也会随之改变

最新文章

  1. JavaWeb——ServletContext
  2. poj3311 TSP经典状压dp(Traveling Saleman Problem)
  3. 异常检测算法--Isolation Forest
  4. ASP.NET中进行消息处理(MSMQ) 二
  5. HEAD
  6. POJ3253Babelfish
  7. UML建模文章总结
  8. MySQL的链接,查看数据库,使用数据库,查看表
  9. HADOOP在处理HIVE时权限错误的解决办法
  10. cglib源码学习交流
  11. BZOJ 1052 HAOI2007 覆盖问题 二分法答案+DFS
  12. web压力测试-pylot
  13. NYOJ353 3D dungeon 【BFS】
  14. POJ 1664 把苹果
  15. Threejs基础学习【修改版】
  16. Cox回归模型【生存分析】
  17. 会议管家——常用的JQ知识点
  18. vue-cli 搭建的项目,无法用本地IP访问
  19. SCU 4444: Travel(最短路)
  20. as3 文档类引用

热门文章

  1. java读取apk、ipa包名、版本名、版本号等信息
  2. mxArray 和 mwArray 的区别
  3. VS/QT--调用第三方库dll总结
  4. [iOS] iPhone,开发工具的一些杂项
  5. Java中创建线程的方式和线程中常用方法?
  6. IO学习笔记7
  7. 消息队列RocketMQ应用
  8. vue 中的 .sync 修饰符 与 this.$emit(&#39;update:key&#39;, value)
  9. [笔记] 什么是Groovy?什么是Kotlin?
  10. 批量统一调整PDF页面尺寸大小