Lua 语法 复杂类型表_数组与二维数组
复杂数据类型
Lua 所有的复杂类型都是 table(表)
数组
如何用Lua table(表) 实现数组
-- lua表中没有具体的限制 可以是数值,字符串,布尔值
a = {1,2,3,4,"洛溪",true,nil}
--Lua 中默认索引 从 1 开始 0 如果没有自定义索引则为空 nil
print(a[0])
-- # 号时用的获取长度的关键字
-- 以前 在打印长度的时候 空nil(会被当做最后一位)中断 (目前测试未重现问题)
-- 以前表中(数组中)某一位变成nil 会影响# 获取的长度 !!以前
print(#a)
数组的遍历
--第一种遍历 #(数据干净的可以用)
for i=1, #a do
print(a[i])
end
--与 # 几乎差不多 但新版测试其实可能会更差
--第二种遍历 ipairs 迭代器 (数据干净的可以用)
for i,k in ipairs(a) do
--键i(索引) 值k(数据)
print("ipairs 遍历键值" ..i.."_"..k)
end
--第三种遍历 pairs 迭代器 (通用)能找到所有的键
for i,k in pairs(a) do
--键i(索引) 值k(数据)
print("pairs 遍历键值" ..i.."_"..k)
end
二维数组
如何用Lua table(表) 实现二维数组
-- lua 语法表现 a表中有两个表变量
-- 表 组成 二维数组
a={{1,2,3} , {4,5,6} }
print(a[1][1])
print(a[1][2])
print(a[2][2])
print(a[2][2])
二维数组的遍历
--第一种遍历 (数据干净)
for i=1, #a do
b=a[i]
for j=1 , #b do
print(b[j])
end
end
--第二种遍历 ipairs 迭代器 (数据干净的可以用)
for i,k in ipairs(a) do
--键i(索引) 值k(数据)
for _,v in ipairs(k) do
--键_(索引) 值v(数据)
print("ipairs 遍历键值" .._.."_"..v)
end
end
--第三种遍历 pairs 迭代器 (通用)能找到所有的键
for i,k in pairs(a) do
--键i(索引) 值k(数据)
for _,v in pairs(k) do
--键_(索引) 值v(数据)
print("pairs 遍历键值" .._.."_"..v)
end
end
自定义索引
简介 自定义索引一般用于 字典(dictionary)可以指定索引来找值
-- 一般也没人这么定义
aa ={[0]=1,2,3,[-1]=4,5}
print(aa[0])
-- 结果1
print(aa[-1])
--结果 4
--# 获取长度 只能从1开始记录 小于等于0 都不会被记录
print(#aa)
-- 结果 3
-- 当中间断开索引 不超过 2 如 3 5 这样 lua 会自动补上索引 4 值为nil
aa = {[1] =4 ,[2] =1 , [4]=2 , [5]=3 }
print(#aa)
-- 结果 5
aa = {[1] =4 ,[2] =1 , [4]=2 , [6]=3 }
print(#aa)
-- 结果 6
aa = {[1] =4 ,[2] =1 , [4]=2 , [7]=3 }
print(#aa)
-- 结果 4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)