table在前面作过介绍,它是一种关联数组,这种关联指的是可以设置各类类型的key来存储值。
1.table 间的数据传递
-- 为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存地址
-- 如果 a 设置为 nil ,则 b 同样能访问 table 的元素。
-- 如果没有指定的变量指向a,Lua的垃圾回收机制会清理相对应的内存。
mytable = {};
print("mytable的类型是:",type(mytable));
mytable[1] = "lua"
mytable["wow"] = "修改前的值"
print("mytable 索引为1的元素是:",mytable[1])
print("mytable 索引为wow的元素是:",mytable["wow"])
beforetable = mytable;
print("beforetable 索引为1的元素是:",beforetable[1])
print("mytable 索引为wow的元素是:",mytable["wow"])
beforetable["wow"] = "修改后的值"
print("mytable 索引为wow的元素是:",mytable["wow"])
-- 释放变量
beforetable = nil;
print("beforetable是:",beforetable)
-- mytable 仍然可以访问
print("mytable索引为wow的元素是:",mytable["wow"])
mytable = nil;
print("mytable是:",mytable)
2.table的操作
-- table 的操作:
-- 1.连接 table.concat()
-- 2.插入 table.insert();在数据的指定位置插入元素,默认在末尾
-- 3.移除 table.remove(table,pos) 移除指定位置的元素
-- 4.排序 table.sort(table)
fruits = {"banana","orange","apple"}
--- 连接操作
print("连接后的字符串是:",table.concat(fruits));
-- 指定符号连接
print("连接后的字符串是:",table.concat(fruits,", "));
-- 指定索引连接
print("连接后的字符串是:",table.concat(fruits,", ",2,3));
--- 插入操作
table.insert(fruits,2,"pear")
print("插入后的元素是:",fruits[2])
--- 移除操作
print("移除前是:",table.concat(fruits,", "));
table.remove(fruits,3);
print("移除前后:",table.concat(fruits,", "));
--- 排序操作
print("排序前:")
for i, v in pairs(fruits) do
print(i,v)
end
table.sort(fruits)
print("排序后:")
for i, v in pairs(fruits) do
print(i,v)
end
|
请发表评论