lua 数组与表的异同

在 Lua 中,table 是唯一的数据结构,它既可以用于实现数组,也可以模拟其他数据结构如树和字典。table 不是值或变量,而是一个对象,其大小可变并支持扩容。赋值给不同变量时,它们共享同一内存,改变其中一个会影响另一个。Lua 中的数组实际上是用 table 实现的,使用自增数字作为 key。同时,table 还能实现多维数组的功能。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值