lua 数组与表的异同
在lua中,table是唯一的数据结构,通过表我们可以实现大部分的重要的数据结构,比如树,字典,当然,lua是没有表的,但是可以用表实现数组。
表
table不是值或者变量,而是对象。
table是不固定大小的,你可以根据自己需要进行扩容。
-- 初始化表
mytable = {}
-- 指定值
mytable[1]= "Lua"
-- 移除引用
mytable = nil
-- lua 垃圾回收会释放内存
当我们为 table a 设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素。如果没有指定的变量指向a,Lua的垃圾回收机制会清理相对应的内存。
table排序
fruits = {"banana","orange","apple","grapes"}
print("排序前")
for k,v in ipairs(fruits) do
print(k,v)
end
table.sort(fruits)
print("排序后")
for k,v in ipairs(fruits) do
print(k,v)
end
结果:
排序前
1 banana
2 orange
3 apple
4 grapes
排序后
1 apple
2 banana
3 grapes
4 orange
数组
lua数组是由table实现的,并且始终将自增数字作为key
fruits = {"banana","orange","apple","grapes"}
print("表")
for k,v in ipairs(fruits) do
print(k,v)
end
print("数组")
for i=1,4 do
print(i,fruits[i])
end
结果:
表
1 banana
2 orange
3 apple
4 grapes
数组
1 banana
2 orange
3 apple
4 grapes
[Finished in 0.2s]
多维数组
1.如下,需要数组中包含数组
array ={}
for i=-1,1 do
array[i] ={}
for j=-1,1 do
array[i][j]=i*j
end
end
for i=-1,1 do
for j=-1,1 do
print(array[i][j])
end
end
1
-0
-1
-0
0
0
-1
0
1
2.需要一维数组的索引键对应一个数组
array ={}
r=1
c=1
for i=-1,r do
for j=-1,r do
array[i*c+j]=i*j
end
end
for i=-1,r do
for j=-1,r do
print(array[i*c+j])
end
end
结果同上结果
end
在 Lua 中,table 是唯一的数据结构,它既可以用于实现数组,也可以模拟其他数据结构如树和字典。table 不是值或变量,而是一个对象,其大小可变并支持扩容。赋值给不同变量时,它们共享同一内存,改变其中一个会影响另一个。Lua 中的数组实际上是用 table 实现的,使用自增数字作为 key。同时,table 还能实现多维数组的功能。

2997

被折叠的 条评论
为什么被折叠?



