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


posted @   BaiLuoXi  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示