lua笔记:table

文章详细介绍了Lua语言中table数据类型的使用,它类似于数组但更强大,允许任何非nil类型作为索引。通过示例展示了如何初始化table,包括定义空表、赋值、创建多维表以及如何访问元素。还讨论了未指定索引时自动填充数字索引的规则,并指出已指定数字索引后,后续未指定索引的元素会覆盖之前的自动填充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

table是lua中的一种十分强大的数据类型,也有点类似于数组,但是在这种类型中你可以使用除了nil以外的任意一种数据类型来作为索引或者元素。
他的定义很简单,用{}包含你的元素即可,注意用 [ ] 包含住你的索引(如果索引类型是字符串可以去掉)。
例如:

T1 = {} --定义一个空表
--可以像数组来赋值
T1[1] = 10
print(T1[1])
--可以定义二维或多维表
T1["player1"] = {hp = 100,atk = 10,name = "name"}
--也可以写成T1["player1"] = {["hp"] = 100,["atk"] = 10,["name"] = "name"}
print(T1["player1"]["hp"])--100
print(T1["player1"]["name"])--name
--获取元素也可以表示为
print(T1.player1.hp)--100
print(T1.player.name)--name

看着好像很乱,如果我们加上一点小小的书写规范,如每个元素占一行。字符串索引去掉[" "],例如上面的表可以写成

T1 = {
    10,
    player1  = {
        hp = 100,
        atk = 10,
        name = name
    }
}
print(T1[1])--10
print(T1.player1.hp)--100
print(T1.player.name)--name

这样就美观多了,可以发现我们第一个元素是没有索引的,对于没有索引的元素,lua会从1开始按顺序自动填入数字作为索引(注意不是从0开始!)。例如我们在T1中加入两个元素

T1 = {
    10,
    player1 = {
        hp = 100,
        atk = 10,
        name = "name",
    },
    [20] = "abc",
    "第二"
}
print(T1[1])--10
print(T1[20])--20
print(T1[2])--第二

其中T1[20]是我们用数字指定的索引,而T1[1]和T1[2]则是因为没有指定索引自动按顺序填入的。可以看出这个顺序是按没有指定索引的元素数量来设置的,与指定索引了的元素无关。
那如果我们先指定了 2 这个索引,又有两个以上的元素没有指定索引呢?

T1 = {
    10,
    player1 = {
        hp = 100,
        atk = 10,
        name = "name",
    },
    [2] = "abc",
    "第二"
}
print(T1[2])--第二

可以看出T1[2]被重新赋值为 “第二”,因此已经指定了数字索引后,自动填入的数字索引并不会绕开这个数字,而是做一个重新赋值的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值