一)table (表)
Table 类型实现了一种抽象的“关联数组”。即可用作数组,也可以用作map。
lua中没有数组和map,都是用table这个类型
--数组
java int[] intArr = new int[]{1,2,3,4,5,6};
intArr[0]
intArr[1]
--map----> key value
HashMap map
map.add(key,value)
-- 初始化表
mytable = {}
-- 指定值
mytable[1]= "Lua"
mytable[2]= "Lua2"
mytalbe["k1"] = v1;
-- 移除引用
mytable = nil
-- lua 垃圾回收会释放内存
lua类似数组的table ,索引值从1开始,,而不是0
mytable={1,2,3,4,5} mytalbe[1] mytable={"a","b","hello","world"} print(mytable[1],mytable[2],mytable[3],mytable[4]);//output:a,b,hello,world print("------------------") mytable1 = {key1 = "v1",k2="v2",k3="v3"} print(mytable1["key1"],mytable1["k2"],mytable1["k3"]);//output:v1,v2,v3 print("------------------") mytable2 = {"a",key1 = "v1","b",k2="v2",k3="v3","hello","world"} 等价于: mytable2 = {1="a",key1 = "v1",2="b",k2="v2",k3="v3",3="hello",4="world"} print(mytable2[1],mytable2["key1"],mytable2[2],mytable2["k2"],mytable2[3],mytable2[4]);
//output:a,v1,b,v2,hello,world
talbe key可以为 number 或字符串,,也可以是其他类型
table 是内存地址 赋值给变量
二)table进行赋值给变量,其实是把内存地址给了变量,变量只是引用了内存地址
local mytable1 = {"a",key1 = "v1","b",k2="v2",k3="v3","hello","world"} local mytable2 = mytable1 mytable2[1] = "aa" print(mytable2[1])//aa print(mytable1[1])//aa mytable2 = nil --移除的是引用 print("-------------") print(mytable1[1])//a 内存指针--》C++
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/17950614
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能