通过例子学习Lua(3) ---- Lua数据结构

通过例子学习Lua(3) ---- Lua数据结构,第1张

概述1.简介 Lua语言只有一种基本数据结构, 那就是table, 所有其他数据结构如数组啦, 类啦, 都可以由table实现. 2.table的下标 例e05.lua -- Arrays myData = {} myData[0] = “foo” myData[1] = 42 -- Hash tables myData[“bar”] = “baz” -- Iterate through the -- 1.简介 Lua语言只有一种基本数据结构,那就是table,所有其他数据结构如数组啦,类啦,都可以由table实现. 2.table的下标 例e05.lua -- Arrays myData = {} myData[0] = “foo” myData[1] = 42 -- Hash tables myData[“bar”] = “baz” -- Iterate through the -- structure for key,value in myData do   print(key .. “=“ .. value) end 输出结果 0=foo 1=42 bar=baz 程序说明 首先定义了一个table myData={},然后用数字作为下标赋了两个值给它. 这种 定义方法类似于C中的数组,但与数组不同的是,每个数组元素不需要为相同类型,就像本例中一个为整型,一个为字符串. 程序第二部分,以字符串做为下标,又向table内增加了一个元素. 这种table非常 像STL里面的map. table下标可以为Lua所支持的任意基本类型,除了nil值以外. Lua对table占用内存的处理是自动的,如下面这段代码   a = {}   a["x"] = 10   b = a     -- `b' refers to the same table as `a'   print(b["x"]) --> 10   b["x"] = 20   print(a["x"]) --> 20   a = nil   -- Now only `b' still refers to the table   b = nil   -- Now there are no references left to the table b和a都指向相同的table,只占用一块内存,当执行到a = nil时,b仍然指向table,而当执行到b=nil时,因为没有指向table的变量了,所以Lua会自动释放table所占内存 3.table的嵌套 table的使用还可以嵌套,如下例 例e06.lua -- table ‘constructor’ mypolygon = {   color=“blue”,  thickness=2,  npoints=4;   {x=0,  y=0},  {x=-10,y=0},  {x=-5,y=4},  {x=0,  y=4} } -- Print the color print(mypolygon[“color”]) -- Print it again using dot -- notation print(mypolygon.color) -- The points are accessible -- in mypolygon[1] to mypolygon[4] -- Print the second point’s x -- coordinate print(mypolygon[2].x) 程序说明 首先建立一个table,与上一例不同的是,在table的constructor里面有{x=0,这是什么意思呢? 这其实就是一个小table,定义在了大table之内,小table的 table名省略了. 最后一行mypolygon[2].x,就是大table里面小table的访问方式. 总结

以上是内存溢出为你收集整理的通过例子学习Lua(3) ---- Lua数据结构全部内容,希望文章能够帮你解决通过例子学习Lua(3) ---- Lua数据结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1269593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存