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 ...
随机推荐
- Javascript-逻辑运算符非(!)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 2016NOI冬令营day2
早上起来发现头不痛了(还是咳) : | 上午先讲自然语言处理!完全不考!完全不涉及!一开始挺有兴趣,后面就完全听不懂了 : | 后来又讲了几道IOI题目(自称只是op),然后就是 从信息熵到数据压缩 ...
- web前端----html表单操作
form表单 功能:表单用于向服务器传输数据,从而实现用户与Web服务器的交互 表单能够包含input系列标签,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含textarea.selec ...
- python基础五--dict
一.昨日内容回顾 1. 列表: 增 insert:按照指定下标插入 append:在列表最后增加 extend:迭代式的增加到列表的最后,相当于列表扩展 删 pop:根据指定下标删除,返回删除的元素, ...
- SQL学习之SQL注入总结
Sql注入定义: 就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行的sql命令的目的. sql注入分类: 基于联合查询 基于错误回显 基于盲注,分时间盲 ...
- 移动互联网消息推送原理:长连接+心跳机制(MQTT协议)
互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了 ...
- 《网络对抗》拓展:注入shellcode
实践三 知识要求: shellcode:指溢出后执行的能开启系统shell的代码.但是在缓冲区溢出攻击时,也可以将整个触发缓冲区溢出攻击过程的代码统称为shellcode,因此可以将shellcode ...
- 函数引用参数加const
Fun(const Type& type); 在引用传递的时候,在函数内部改变参数,会改变参数实际值. 加上了const就不能被修改.
- win10 字体渲染优化 色彩调整
最近烧包买了个2k显示器,发现跟win10使用,一堆问题,最大的就是字体,其实应该买4k,那样正好设置200%字体,现在设置的124% 字体: 以前使用的是mactype这个软件 https://pa ...
- JSON类库Jackson与JSON-lib性能对比[转]
Jackson:http://jackson.codehaus.org/ JSON-lib:http://json-lib.sourceforge.net/ Gson:http://code.goog ...