Lua中Table的学习
--table 是 Lua 的一种数据结构,用来帮助我们创建不同的数据类型,如:数组、字典等
--Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"format"来索引table string。 mytable = {}
print("mytable 的类型:",type(mytable)) mytable[] = "Lua"
mytable["wow"] = "修改前"
print("mytable 索引为 1 的元素:",mytable[])
print("mytable 索引为 wow 的元素:",mytable["wow"]) --两个table指向的是同一块内存
lgstable = mytable print("lgstable 索引为 1 的元素:",lgstable[]) print("mytable 索引为 wow 的元素:",mytable["wow"])
lgstable["wow"] = "修改后"
print("mytable 索引为 wow 的元素:",mytable["wow"]) --释放变量
lgstable = nil
print("lgstable :",lgstable) --mytable依然可以访问
print("mytable 索引为 wow 的元素:",mytable["wow"]) mytable = nil
print("mytable :",mytable) --[[
以上代码执行结果: mytable 的类型: table
mytable 索引为 1 的元素: Lua
mytable 索引为 wow 的元素: 修改前
lgstable 索引为 1 的元素: Lua
mytable 索引为 wow 的元素: 修改前
mytable 索引为 wow 的元素: 修改后
lgstable : nil
mytable 索引为 wow 的元素: 修改后
mytable : nil
--]] --table的操作 --table连接表中的元素为字符串
fruits = {"banana","orange","apple"}
--返回table连接后的字符串
print(table.concat(fruits))
--指定连接符
print(table.concat(fruits,','))
--指定索引
print(table.concat(fruits,',',,)) --[[
运行结果:
bananaorangeapple
banana,orange,apple
orange,apple
--]] --插入和移除
fruits2 = {"banana","orange","apple"}
--末尾插入
table.insert(fruits2,'mango')
print(fruits2[])
--索引为2的键处插入
table.insert(fruits2,,'grapes')
print(fruits2[]) print(fruits2[])
table.remove(fruits2)
print(fruits2[]) --[[
运行结果:
mango
grapes
mango
nil
--]] --table排序
fruits3 = {"banana","orange","apple", "grapes"}
print("排序前")
for i,v in ipairs(fruits3) do
print(i,v)
end table.sort(fruits3) print("排序后")
for i,v in ipairs(fruits3) do
print(i,v)
end --获取table的长度
print(#fruits3)
print(table.getn(fruits3))
以下为table的补充内容:
table.insert(t, pos, value) 在t指定位置插入元素
table.insert(t, value) 在t末尾插入元素
table.remove(t, pos) 在t指定位置删除元素,并返回删除的元素
table.remove(t) 在t末尾删除元素,并返回删除的元素
a = {};
table.insert(a,, )
table.insert(a,, )
table.insert(a,)
for i,v in ipairs(a) do
print(i,v)
end
print("-----------");
b = table.remove(a, );
print("b = " .. b);
table.remove(a);
for i,v in ipairs(a) do
print(i,v)
end
输出结果:

Lua中Table的学习的更多相关文章
- lua中 table 元表中元方法的重构实现
转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...
- lua中 table 重构index/pairs元方法优化table内存占用
转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...
- lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?
lua中 table.getn(t) .#t. table.maxn(t) 这三个什么区别? RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = ...
- Lua中table的实现-《Lua设计与实现》
本文来自<Lua设计与实现>的阅读笔记,推荐Lua学习者可以购买一本,深入浅出讲解lua的设计和实现原理,很赞,哈哈 Lua中对于表的设计,是基于数组和散列表,和其他语言不同,对于数组 ...
- lua中table的遍历,以及删除
Lua 内table遍历 在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: 1. ipairs for index, value in ipair ...
- lua中table如何安全移除元素
在Lua中,table如何安全的移除元素这点挺重要,因为如果不小心,会没有正确的移除,造成内存泄漏. 引子 比如有些朋友常常这么做,大家看有啥问题 将test表中的偶数移除掉local test = ...
- C++对Lua中table进行读取、修改和创建
C++代码: // LuaAndC.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #i ...
- Lua中元表的学习
--table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作. --元表(Metatable),允许我们改变table的行为,可以对两个table进行操作 -- ...
- Lua中数组的学习
--数组的大小是不固定的 --一维数组的逻辑结构是线性表索引从1开始 array1 = {"Lua", "Tutorial"} , do print(array ...
随机推荐
- MySQL用户授权 和 bin-log日志 详解和实战(http://www.cnblogs.com/it-cen/p/5234345.html)
看 了上一篇博文的发布时间,到目前已经有三个月没更新博文了.这三个月经历了很多事情,包括工作.生活和感情等等.由于个人发展的原因,这个月准备换工作 啦.在这段时间,我会把Web大型项目中所接触到的技术 ...
- linux du df ls
du可以查看文件和文件夹的大小,df主要查看数据库大小,查看分区的的磁盘使用情况,ls可以添加-h参数,方便我们查看文件大小 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为 ...
- LinkedList详解
一.LinkedList的介绍与特点. 1.继承实现关系. 实现了双端队列接口Deque,因此具有双端队列的功能:addFirt,addLast,offerFirt,offerLast,removeF ...
- Ajax—web中ajax的常用方式
什么Web2.0的特点? 1:注重用户贡献度 2:内容聚合RSS协议(每小块都个性化,单独加载单独请求,不用全部刷新--Ajax) 3:更丰富的用户体验 Ajax的概念? "Asynchro ...
- 26最短路径之Floyd算法
Floyd算法 思想:将n个顶点的图G“分成”很多子图 每对顶点vi和vj对应子图Gij(i=0,1,…,n-1和j=0,1,…,n-1) 每对顶点vi和vj都保留一条顶点限于子图Gij中的最短路径P ...
- Python: ValueError: too many values to unpack
eg1: >>>a,b=(1,2,3) Traceback (most recent call last): File "<stdin>",line ...
- linux常用命令:find 命令概览
Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时 ...
- python进程、多进程
进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当 ...
- GitHub+Hexo 搭建个人网站
GitHub+Hexo 搭建个人网站 转自 https://www.sufaith.com/article/561.html 一.创建GitHub Pages站点 GitHub Pages是一种静态站 ...
- RSA加解密用途简介及java示例
在公司当前版本的中间件通信框架中,为了防止非授权第三方和到期客户端的连接,我们通过AES和RSA两种方式的加解密策略进行认证.对于非对称RSA加解密,因为其性能耗费较大,一般仅用于认证连接,不会用于每 ...