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.关系运算符 ...
随机推荐
- Android支付接入(七):Google In-app-Billing
前段时间有事请耽搁了,今天跟大家一起看下Google的in-app Billing V3支付. 如果没有Google Play此处附上安装Google Play的一键安装器的链接(需要Root权 ...
- hdu 4620 Fruit Ninja Extreme(状压+dfs剪枝)
对t进行从小到大排序(要记录ID),然后直接dfs. 剪枝的话,利用A*的思想,假设之后的全部连击也不能得到更优解. 因为要回溯,而且由于每次cut 的数目不会超过10,所以需要回溯的下标可以利用一个 ...
- oracle undo 复杂度--oracle核心技术读书笔记四
一. 概述 undo 保存的是旧数据.比方,你改动了一条记录将A列abc改动为def,那么undo里面保存的就是abc.目的有两个:1. 假设你的事务没有提交,可是已经将A列改动,那么别人读取这条数据 ...
- Linux for周期运行命令注意事项
假定for有一些符号循环指令,需要使用()封闭. for i in {1..4}; do (python /data/UGCRobot/manage/Scheduler.py 1.log > / ...
- (转)一篇很不错的介绍Eclipse插件Menu及其扩展点的文章
原文在:http://tech.ddvip.com/2010-04/1271054623150507.html 菜单是各种软件及开发平台会提供的必备功能,Eclipse 也不例外,提供了丰富的菜单,包 ...
- MySQL将表a中查询的数据插入到表b中
MySQL将表a中查询的数据插入到表b中 假设表b存在 insert into b select * from a; 假设表b不存在 create table b as select * from a ...
- 一 手游开发工具cocos2d-x editor初识
可学习的demo: 7个实战项目 flappybird(飞扬小鸟).popstar(消灭星星).fruitninja(水果忍者).2048(数度消除). moonwarriors(月亮战神).frui ...
- 数据库关于group by 两个或以上条件的分析
首先group by 的简单说明: group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素: (1) 出现在select后面的 ...
- SQLserver2012 tcp/ip 1433port问题解决方法
非常多MSSQL安装完毕后,调用1433(默认port)是失败的,这边具体介绍下解决方法. 一..我们须要在电脑上开启telnet服务,定位问题须要.在cmd下使用telnet,假设报命令不存在说明没 ...
- mysql表修改
CREATE TABLE tab2 AS (SELECT * FROM tab1)这种做法表的存储引擎也会采用服务器默认的存储引擎而不是源表的存储引擎,此种复制方法把表的内容也一起复制过来了. CRE ...