文中– 两个横线开始单行的注释,–[[加上两个[和]表示多行的注释–]]。
复制代码 代码如下:– Table = Lua唯一的数据结构;
— 它们是关联数组。
— 类似于PHP的数组或者js的对象,
— 它们是哈希查找表(dict),也可以按list去使用。
复制代码 代码如下:– 按字典/map的方式使用Table:
— Dict的迭代默认使用string类型的key:
t = {key1 = \’value1\’, key2 = false}
复制代码 代码如下:– String的key可以像js那样用点去引用:
print(t.key1) — 打印 \’value1\’.
t.newKey = {} — 添加新的 key/value 对。
t.key2 = nil — 从table删除 key2。
复制代码 代码如下:– 使用任何非nil的值作为key:
u = {[\’@!#\’] = \’qbert\’, [{}] = 1729, [6.28] = \’tau\’}
print(u[6.28]) — 打印 \”tau\”
复制代码 代码如下:– 对于数字和字符串的key是按照值来匹配的,但是对于table则是按照id来匹配。
a = u[\’@!#\’] — 现在 a = \’qbert\’.
b = u[{}] — 我们期待的是 1729, 但是得到的是nil:
— b = nil ,因为没有找到。
— 之所以没找到,是因为我们用的key与保存数据时用的不是同一个对象。
— 所以字符串和数字是可用性更好的key。
复制代码 代码如下:– 只需要一个table参数的函数调用不需要括号:
function h(x) print(x.key1) end
h{key1 = \’Sonmi~451\’} — 打印\’Sonmi~451\’.
复制代码 代码如下:for key, val in pairs(u) do — Table 的遍历.
print(key, val)
end
复制代码 代码如下:– _G 是一个特殊的table,用于保存所有的全局变量
print(_G[\’_G\’] == _G) — 打印\’true\’.
复制代码 代码如下:– 按list/array的方式使用:
— List 的迭代方式隐含会添加int的key:
v = {\’value1\’, \’value2\’, 1.21, \’gigawatts\’}
for i = 1, #v do — #v 是list的size
print(v[i]) — 索引从 1 开始!! 太疯狂了!
end
— \’list\’并非真正的类型,v 还是一个table,
— 只不过它有连续的整数作为key,可以像list那样去使用。
您可能感兴趣的文章:
- 深入谈谈lua中神奇的table
- Lua Table转C# Dictionary的方法示例
- Lua中设置table为只读属性的方法详解
- Lua编程示例(一):select、debug、可变参数、table操作、error
- Lua table中安全移除元素的方法
- Lua的table库函数insert、remove、concat、sort详细介绍
- C++遍历Lua table的方法实例
- Lua中释放table占用内存的方法
- Lua中table的遍历详解
- Lua中获取table长度问题探讨
- Lua中获取table长度的方法
- Lua中table里内嵌table的例子
- Lua面向对象编程之基础结构table简例