表据说是LUA的核, 呵呵, 看例子吧, 看上去, 跟java的list很像, 又有点像json:

    a = {}     -- create a table and store its reference in `a'
k = "x"
a[k] = 10 -- new entry, with key="x" and value=10
a[20] = "great" -- new entry, with key=20 and value="great"
print(a["x"]) --> 10
k = 20
print(a[k]) --> "great"
a["x"] = a["x"] + 1 -- increments entry "x"
print(a["x"]) --> 11

这货好混乱, 像list又完全不理数据类型的赶脚.

为了内存好, 用完就自动回收吧.

    a = {}
a["x"] = 10
b = a -- `b' refers to the same table as `a'
print(b["x"]) --> 10
b["x"] = 20
print(a["x"]) --> 20
a = nil -- now only `b' still refers to the table
b = nil -- now there are no references left to the table

至于为什么这玩意儿称之为表(table), 看下面这个例子:

    a = {}     -- empty table
-- create 1000 new entries
for i=1,1000 do a[i] = i*2 end
print(a[9]) --> 18
a["x"] = 10
print(a["x"]) --> 10
print(a["y"]) --> nil

看到了吧, 可以直接用"x"来给a这个表的某个元素赋值, 看上去像不像java里面的map? 我直接呵呵.

    a.x = 10                    -- same as a["x"] = 10
print(a.x) -- same as print(a["x"])
print(a.y) -- same as print(a["y"])

这个东西看起来又像js里面的属性啊.奇妙~~~~

    a = {}
x = "y"
a[x] = 10 -- put 10 in field "y"
print(a[x]) --> 10 -- value of field "y"
print(a.x) --> nil -- value of field "x" (undefined)
print(a.y) --> 10 -- value of field "y

上面例子说明, x跟"x"不是一码事儿, "x", 感觉像一个map里面的key, 而x则类似于array里面的脚标.

其实, 全部理解成map就对了, map跟table, 本质上区别不大, 都是key跟value的关系, 只是key的值可以是数字, 也可以是string, 这么理解就清晰了.

嗯, 官方也说了, 如果真的需要一个array, 就把key挨个做成数字即可:

    -- read 10 lines storing them in a table
a = {}
for i=1,10 do
a[i] = io.read()
end

因为{}这玩意儿给了table, 搞得LUA里面的过程跟循环都用do跟end关键字来当界定符.

用下面这个例子结束这一篇:

    -- print the lines
for i,line in ipairs(a) do
print(line)
end

ipairs()是一个函数, 能枚举a里面的所有元素.

另外一个值得注意的地方是, LUA推荐使用1当数组的第一个元素, 而不是0, 这跟几乎所有的语言背道而驰了...

LUA笔记之表的更多相关文章

  1. 【游戏开发】Excel表格批量转换成lua的转表工具

    一.简介 在上篇博客<[游戏开发]Excel表格批量转换成CSV的小工具> 中,我们介绍了如何将策划提供的Excel表格转换为轻便的CSV文件供开发人员使用.实际在Unity开发中,很多游 ...

  2. And Design:拓荒笔记——Form表单

    And Design:拓荒笔记——Form表单 Form.create(options) Form.create()可以对包含Form表单的组件进行改造升级,会返回一个新的react组件. 经 For ...

  3. Cocos2d-x 脚本语言Lua基本数据结构-表(table)

    Cocos2d-x 脚本语言Lua基本数据结构-表(table) table是Lua中唯一的数据结构.其它语言所提供的数据结构,如:arrays.records.lists.queues.sets等. ...

  4. Oracle笔记 多表查询

    Oracle笔记  多表查询   本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...

  5. Lua笔记

    闭包 示例一 function newCounter() return function() -- anonymous function i = i + return i end end c1 = n ...

  6. AngularJS 1.2.x 学习笔记(表单校验篇)

    https://my.oschina.net/cokolin/blog/526911 摘要: 本文首发于 blog.csdn.net/vipshop_ebs/article/details/39472 ...

  7. Lua笔记(1)

    今天开始学习Lua,下面把一些重点记下来: 单行注释-- ,多行注释 --[[  .......  --]] Lua中false和nil表示条件判断的假,其余的,包括空字符串,0,都表示真. Lua没 ...

  8. Lua 多维表的遍历中的赋值

    说到Lua的遍历将要使用到循环:先说遍历再说循环: 遇到这样类似结构的一个table Data={ []={p1=,pa={,,}}, []={p1=,pa={,,}}, []={p1=,pa={,, ...

  9. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

随机推荐

  1. 圆角边框_css控制形状

    border-radius:500px 来让整个图像变成圆形. border-top-left-radius: 6px;(左上角圆角)   border-top-right-radius: 6px;( ...

  2. 逻辑卷管理LVM (Logical Volume Manager)

    什么是LVM? LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的 ...

  3. [SharpDevelop]程序入口

    在StartUp项目中,SharpDevelopMain类的Main函数.

  4. 使用IXmlSerializable的问题

    最近又开始使用XML了,但今天遇到一个折腾我一下午加一个晚上的时间,终于从网络上找到相关的资料解决了. 有一个成员是用来存放正则表达式的,由于里面包含其它字符,所以想用CDATA来保存方便查看,所以想 ...

  5. Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具

    Sqoop是一款开源的工具,主要用于在Hadoop相关存储(HDFS.Hive.HBase)与传统关系数据库(MySql.Oracle等)间进行数据传递工作.Sqoop最早是作为Hadoop的一个第三 ...

  6. IntelliJ IDEA 缓存和索引介绍和清理方法

    IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比,我也简单强调了 IntelliJ IDEA 索引的重要性.这里我们再对此进行详细说明索引.缓存对 ...

  7. Java SE series:2. enhance your java basis! [doc chm: jdk6api Chinese reference]

    1. javaee(Web) and Android 2. how to use eclipse and break point debuging in eclipse, as to java web ...

  8. [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. Ruby On Rails经典书籍下载地址

    Web开发敏捷之道-应用Rails进行敏捷Web开发   http://vdisk.weibo.com/s/t47M5Q3WInwc RUBY ON RAILS入门经典   http://downlo ...

  10. SVN空格问题的解决方法

    (注意:如果你的路径里有空格记得要在binpath的头尾用转义字符/"把整个个binpath框起来,D:\SVN\svnroot指svn资源库根目录) displayname指服务名称 de ...