来做一个Brain Storm,细数一下你曾经使用过的数据结构: map, hash_map, array, queue, stack, heap...或许还有很多其它的数据结构,相信在开始接触每个数据结构的时候都花了很多的时间去了解它们的特性,因为他们每一种都是足够的复杂。那么作为一个简单至极的语言,Lua是怎么实现这些的呢?答案是Lua中根本没有这些数据结构,汗了吧!更汗的是,Lua其实只一个真正意义上我们所谓的数据结构table,所以在这个简单的语言中我们可以使用的只能table这一种数据结构,下面我们来看一下这个神奇的table吧。
1, 我们可以使用table来实现一个数组 array = {1, 2, 3},这是一个大小为3的数组(*注其索引是从1开始的),可以使用#array来获取数组的大小即 #array = 3,也可以使用table.size(array)来获取数组的大小。这里array是一个变长的数组执行table.insert(array, 4),array就变成了{1,2,3,4}。table.remove(array, pos)来删除数组中指定位置的元素,其后面的元素都会相应前移。
2, 用table实现字典 dict = {[2] = 2, ["abc"] = "abc", [true] = false}, 由此可见lua字典的key值可以为任何的数据类型(nil除外),print(dict["abc"])会输出“abc"。那么现在有一个问题了,即然table即可以表示数组,又可以表示字典,如何区分呢?可以这样分类,如果像1那样不包含key值,它即是数组,也是字典,它也可以写成array = {[1] = 1, [2] = 2, [3] = 3},所以如果一个字典它的key值是从1开始按1递增的,效果同上。所以{1,2,3,[4] = 4} 等同于{1,2,3,4}和 {[1] = 1, [2] = 2, [3] = 3, [4] = 4}。而array = {1,2,3, [5] = 5}则会出现#array = 3,即前三项是一个数组,如果出现key不是整整形,效果同上。
3,table实现queue, stack, heap等原理同在c++中使用数组实现他们类似。
4,table也可以类似于C++的struct的使用如 tbl = { year = 2014, date = 7 , month = 4}, 而使用的时候可以直接tbl.year, tbl, date, tbl.month来使用。
相关推荐
通过执行python脚本(jsonToLua.py)
Lua中的table函数库.pdf Lua初学 table 经典有用 有用 ,分享一下。
详细描述Lua和C之间相互传递Table类型数据 /* ====================================================== */ // 遍历Lua传入的Table类型参数, 获取它的Key/Value, 其关键操作是 lua_next() // lua_next() 返回1表示...
主要介绍了Lua中释放table占用内存的方法,本文讲解了两种释放内存的方法,需要的朋友可以参考下
Lua的table元表自我学习笔记分享。--lua元表总结 --1、__index的运用 (调用table的一个不存在的索引时,会使用到元表的__index元方法,搜索元表是否也有改索引,__index可以是一个函数也可是一个table。)
步骤: 1. 通过 Navicat Mysql 或 Navicat Premium 先到处表成json文件。...2. 把导出的文件复制到 Json2Lua 文件夹下的 json文件夹下。 3. 双击运行 run.bat 4. 没有报错的话,会把转换后的文件输出到 lua文件夹下。
lua库函数
Lua的table库函数insert、remove、concat、sort详细介绍1
主要介绍了Lua中table里内嵌table的例子,本文同时讲解了如何访问内嵌table方法的例子,需要的朋友可以参考下
使用时修改python内的文件夹路径 需要安装xlrd 可以实现多sheet多xls转化 Version:1.0
将相同的table 提取出来,实测减了20mlua内存
NULL 博文链接:https://liaolzy.iteye.com/blog/704713
主要介绍了Lua中访问table里函数的方法示例,本文例子超级简单,算是入门实例吧,其实只需要表名.方法名即可访问,重要的还是其它代码写法,本文给出了一个完整的代码示例,需要的朋友可以参考下
主要介绍了Lua中获取table长度的方法,本文用多个实例讲解多种情况下获取Table长度的方法,需要的朋友可以参考下
用Lua语言写的一个配置文件转换工具,能够将csv配置文件转换为Lua“类文件”。支持的格式有数字、字符串、数字数组、字符数组和table等。内有详细使用说明。水平有限,如有Bug或者好的建议欢迎留言交流。
主要介绍了Lua中获取table长度问题探讨,本文非常深入的研究了Lua中table长度的获取问题,分析了各种各样的情况,需要的朋友可以参考下
解析文件使用 lua 编写,把 *.xls 解析成 lua table,双击 run.bat 文件值行解析,支持多子表解析,键值对 k/v 解析。 例子说明:https://blog.csdn.net/qq_26117171/article/details/127131168 支持解析的数据类型...
配合ulua使用的导表工具,把excel表直接导成lua可用的table
require文件刷新.lua 完美获得小数点第n位.lua table 复写pairs方法.lua 实现数组的全排列.lua table数组的逆序.lua 将csv内容输出保存table.lua ...复制table不改变原table.lua 输出字符串table.lua
c/c++从栈上获取Lua压栈过来的table数据 代码如下:map<string> traverse_table(lua_State *L, int index){ map<string> data; lua_pushnil(L); // 现在的栈:-1 => nil; index => table index = index – 1; ...