Lua语言之table表

table有两种形式,数组形式与键值对形式。

一:table基本用法

1.table基本使用

①初始化
table 表名 = {}

②赋值
数组形式: newTable[0] = “BeiJing” 即同数组一样改变下标进行赋值
键值对形式: newTable2[“Xian”] = “Shanxi”

这里写图片描述

③遍历
数组形式:
for key, value in ipairs(表名) do
print(key, value)
end

键值对:
for key, value in pairs(表名) do
print(key, value)
end

可知,两种遍历方式的不同在于分别为ipairs与pairs

这里写图片描述

2.table方法

①增加元素
数组形式: table.insert(tableName, [position], value)
*: 向指定的位置增加元素,其他元素会依次向后移动。若不写位置,则默认为添加到最后位置,该方式不适于键值对
键值对:tableName[“key”] = value

②删除元素
数组:table.remove(tableName, [position])
*:不写位置则默认删除最后一个元素,若是下标越界,不会报错,也不会有元
素被移除
键值对:tableName[“key”] = nil

这里写图片描述

③获取长度
数组形式:table.getn( tableName)
*:返回表的长度,同样适用于数组形式,而不适合键值对
键值对:设置一个变量在迭代器中迭代从而获取长度

### Lua 中 `table.insert` 的使用方法 `table.insert` 是 Lua 中用于向table)中插入元素的一个内置函数。它的作用是将一个值插入到的指定位置,或者默认插入到的末尾。以下是关于 `table.insert` 的详细说明和示例。 #### 语法 `table.insert(table, [pos,] value)` - **`table`**:目标,即需要插入元素的。 - **`pos`**(可选):插入的位置索引。如果省略,则将元素追加到的末尾。 - **`value`**:要插入的值。 #### 描述 当调用 `table.insert` 时,如果指定了 `pos` 参数,则会将值插入到中的第 `pos` 个位置,并将后续元素向后移动一位[^1]。如果没有指定 `pos` 参数,则会将值追加到的末尾。 #### 示例代码 以下是一些使用 `table.insert` 的示例: ```lua -- 创建一个空 local tbl = {} -- 向末尾插入元素 table.insert(tbl, "Apple") -- tbl = {"Apple"} table.insert(tbl, "Banana") -- tbl = {"Apple", "Banana"} -- 在指定位置插入元素 table.insert(tbl, 2, "Orange") -- tbl = {"Apple", "Orange", "Banana"} -- 打印内容 for i, v in ipairs(tbl) do print(i, v) end ``` 运行结果: ``` 1 Apple 2 Orange 3 Banana ``` #### 注意事项 1. 如果插入的位置超出了的当前长度,则会在该位置插入值,并将中间的空位填充为 `nil`[^4]。 2. 如果中已经存在非连续的 `nil` 值,则可能导致意外行为,因为 Lua 使用 `#table` 来确定的长度,而 `#table` 不会计算中间的 `nil` 值。 #### 示例代码(处理非连续 `nil`) ```lua local tbl = {1, nil, 3} table.insert(tbl, 2, "Inserted") -- tbl = {1, "Inserted", nil, 3} for i, v in pairs(tbl) do print(i, v) end ``` 运行结果: ``` 1 1 2 Inserted 3 nil 4 3 ``` #### 性能优化 在 LuaJIT 中,`table.insert` 的性能通常较高,但如果需要频繁插入或删除元素,建议预先分配的大小以减少内存分配的开销[^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值