12.table

来源:互联网 发布:origin8怎么数据拟合 编辑:程序博客网 时间:2024/05/21 16:15

Lua 中table 使用了关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。

Lua中 table 是不固定大小的,你可以根据自己需要进行扩容。

Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。

table的构造:

构造器是创建和初始化表的表达式。最简单的构造函数是{},用来创建一个空表。

-- 初始化表mytable = {}-- 指定值mytable[1]= "Lua"-- 移除引用mytable = nil-- lua 垃圾回收会释放内存

例子: 

mytable = {}print("mytable 的类型是 ",type(mytable))mytable[1]= "Lua"mytable["wow"] = "修改前"print("mytable 索引为 1 的元素是 ", mytable[1])print("mytable 索引为 wow 的元素是 ", mytable["wow"])-- alternatetable和mytable的是指同一个 tablealternatetable = mytableprint("alternatetable 索引为 1 的元素是 ", alternatetable[1])print("alternatetable 索引为 wow 的元素是 ", alternatetable["wow"])alternatetable["wow"] = "修改后"print("mytable 索引为 wow 的元素是 ", mytable["wow"])-- 释放变量alternatetable = nilprint("alternatetable 是 ", alternatetable)-- mytable 仍然可以访问print("mytable 索引为 wow 的元素是 ", mytable["wow"])mytable = nilprint("mytable 是 ", mytable)执行结果为:mytable 的类型是 tablemytable 索引为 1 的元素是 Luamytable 索引为 wow 的元素是 修改前alternatetable 索引为 1 的元素是 Luaalternatetable 索引为 wow 的元素是 修改前mytable 索引为 wow 的元素是 修改后alternatetable 是 nilmytable 索引为 wow 的元素是 修改后mytable 是 nil

当创建 mytable并设置元素,然后将 mytable 赋值给alternatetable,则mytable alternatetable 都指向同一个内存。如果mytable   设置为 nil ,则alternatetable 同样能访问 table 的元素。如果没有指定的变量指向mytable  ,Lua的垃圾回收机制会清理相对应的内存。

0 0