Lua之Lua数据结构-TTLSA(6)(转) good
一. table
table是lua唯一的数据结构。table 是 lua 中最重要的数据类型。 table 类似于 python 中的字典。table 只能通过构造式来创建。其他语言提供的其他数据结构如array、list等等,lua都是通过table来实现的。table非常实用,可以用在不同的情景下。最常用的方式就是把table当成其他语言的数组。
实例1:
1
2
3
4
|
mytable = {}
for index = 1, 100 do
mytable[index] = math.random(1,1000)
end
|
说明:
1). 数组不必事先定义大小,可动态增长。
2). 创建包含100个元素的table,每个元素随机赋1-1000之间的值。
3). 可以通过mytable[x]访问任意元素,x表示索引。
4). 索引从1开始。
实例2:
1
2
|
tab = { a = 10, b = 20, c = 30, d = 'www.ttlsa.com' }
print(tab["a"]) :
|
说明:
1). table 中的每项要求是 key = value 的形式。
2). key 只能是字符串, 这里的 a, b, c, d 都是字符串,但是不能加上引号。
3). 通过 key 来访问 table 的值,这时候, a 必须加上引号。
实例3:
1
2
3
4
5
|
tab = { 10, s = 'www.ttlsa.com', 11, 12, 13 }
print(tab[1]) = 10
print(tab[2]) = 11
print(tab[3]) = 12
print(tab[4]) = 13
|
说明:
1). 数标从1开始。
2). 省略key,会自动以1开始编号,并跳过设置过的key。
二. table函数
lua提供了许多实用的内建函数来操作table。
2.1 table.getn(table)
返回table中的元素个数。
print(table.getn(tab)) -> 4
2.2 table.insert(table,position,value)
在table中插入一个新的值,位置参数可选的,如果没有指定,会添加table的末尾,否则插入到指定的位置。
table.insert(tab, 2, "hello ttlsa.com")
插入"hello ttlsa.com"到table的第2个元素的位置,并重新索引。
2.3 table.remove(table,position)
从指定table中删除并返回一个元素,如果没有指定position值,则默认删除最后一个元素。
print(table.remove(tab,2)) -> hello ttlsa.com
三. table引用
table不仅可以使用数字索引,也可以用其他值作为索引值。
1
2
3
4
5
6
|
tab = ()
tab.website = "www.ttlsa.com"
tab.QQ = "39514058"
tab.a = math.random(1,10)
tab[1] = 11
tab[2] = 22
|
四. 多维table
在lua中创建多维table非常容易的。可以把多维table看做是table的table。可以通过多个关键字来访问。
1
2
3
4
5
6
7
8
|
multitab = {}
multitab.name = {}
multitab.author = {}
multitab.name[1] = "QQ qun: 39514058"
multitab.name[2] = "website: http://www.ttlsa.com"
multitab.author[1] = "默北"
multitab.author[2] = "凉白开"
multitab.author[3] = "tonyty163"
|
五. 遍历table
pairs()函数可以遍历table中的每个元素。
1
2
3
4
|
tab = { 10, s = 'www.ttlsa.com', 11, 12, 13 }
for k, v in pairs(tab) do
print(k, ":", v)
end
|
输出:
1 : 10
2 : 11
3 : 12
4 : 13
s : www.ttlsa.com
pairs()函数遍历整个table,即使不知道table长度,并返回索引值和相对应的元素值。
https://www.ttlsa.com/lua/lua-data-structure-ttlsa/
Lua之Lua数据结构-TTLSA(6)(转) good的更多相关文章
- [转]Lua和Lua JIT及优化指南
一.什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-T ...
- 优雅的使用sublime写lua~ sublime lua相关必装插件推荐~~
缘起 lua脚本语言虽好,代码写得飞快,可是写错了调试起来却很困难,lua使用者经常容易犯得一个错误是--写错变量名了,if end 嵌套太多没匹配~,多打了一个逗号, 假设定义了一个变量 local ...
- This module embeds Lua, via LuaJIT 2.0/2.1, into Nginx and by leveraging Nginx's subrequests, allows the integration of the powerful Lua threads (Lua coroutines) into the Nginx event model.
openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers https://github.com/openre ...
- 华丽的使用sublime写lua~ sublime lua相关必装插件推荐~~
缘起 lua脚本语言虽好,代码写得飞快,可是写错了调试起来却很困难,lua使用者经常容易犯得一个错误是--写错变量名了,if end 嵌套太多没匹配~,多打了一个逗号, --假设定义了一个变量 loc ...
- 如何在Mac OS X 中运行Lua (Running Lua on Mac OS X)
参考文章:1) http://www.oschina.net/question/12_769552) http://rudamoura.com/luaonmacosx.html 最近在为iOS开发游戏 ...
- Lua常用的数据结构表示
1.矩阵 Lua中有两种表示矩阵的方法,一是“数组的数组”.也就是说,table的每个元素是另一个table.例如,可以使用下面代码创建一个n行m列的矩阵:mt = {} -- cr ...
- Lua中的数据结构
1 数组:(lua习惯数组从1开始) a={} , do a[i]= end 2 阵和多维数组 : mt={}//新建一个表,表元素为表 ,N do mt[i]={}//新建一个表,里面的表元素为值 ...
- Lua学习---Lua的控制结构
前言 由于之前有c/c++.javascript基础,所以学Lua的时候喜欢拿来和前面的语言比较,这里主要和C比较 1.if...else Lua的if语句格式: if 条件 then 条件成立,运行 ...
- Lua学习----Lua的表达式
前言 Lua的运算符和其他语言基本类似.但也有一点点区别 1.算术运算符 Lua的算术运算符加入了指数运算符^ print(2 ^ 10) -->打印 1024. 求2的10次方 2.关系运算符 ...
随机推荐
- HOG算子
原地址:http://blog.csdn.net/chlele0105/article/details/11991533 梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符,它通过计算局 ...
- Hibernate学习之createSQLQuery与createQuery的区别及使用
hibernate中createQuery与createSQLQuery:前者用的hql语句进行查询,后者可以用sql语句查询,前者以hibernate生成的Bean为对象装入list返回,后者则是以 ...
- jsoncpp使用
第一个github网站下载jsoncpp最新的版本库:https://github.com/open-source-parsers/jsoncpp 点击右下角的Download ZIP进行下载 解压后 ...
- [Python]网络爬虫(十):一个爬虫的诞生全过程(以山东大学绩点运算为例)
先来说一下我们学校的网站: http://jwxt.sdu.edu.cn:7777/zhxt_bks/zhxt_bks.html 查询成绩需要登录,然后显示各学科成绩,但是只显示成绩而没有绩点,也就是 ...
- Windows内核
每天我们都在使用Windows系统学习.编程.听音乐.玩游戏,Windows的操作想来是非常熟练了,但是你又对Windows究竟了解多少呢?本系列的目的,就是让你对Windows系统有个更直观.更清楚 ...
- 乞讨N!到底有多少0
分析: 对N质因数分解 N=2^x * 3^y * 5^z....因为10 = 2*5,所以末尾0的个数仅仅和x与z有关,每一对2和5相乘能够得到一个10.于是末尾0的个数=min(x,z).在实际中 ...
- ORA-16047: DGID mismatch between destination setting and target database
做DG的时候 主库两个节点无法把日志传到备库上 SQL> select dest_name,status,type,database_mode,protection_mode,destinati ...
- Smarty模板引擎的使用
Smarty模板引擎的使用 Smarty是PHP中一个基于MVC模式的模板引擎. Download: http://www.smarty.net/download 特点 1. 最快速度的程序开发 ...
- zoj - 3209 - Treasure Map(精确覆盖DLX)
题意:一个 n x m 的矩形(1 <= n, m <= 30),现给出这个矩形中 p 个(1 <= p <= 500)子矩形的左下角与右下角坐标,问最少用多少个子矩形能够恰好 ...
- [ACM] HDU 2063 过山车 (二分图,匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...