当前位置: 首页 > ds >正文

Lua(数组)

Lua 数组基础概念

Lua 中的数组实际上是用整数索引的 table,是一种特殊形式的表。数组索引通常从 1 开始(Lua 惯例),但也可以从其他值开始。

创建数组

通过表构造器初始化数组:

-- 索引从 1 开始的数组  
local arr = {10, 20, 30, "hello"}  -- 显式指定索引(可自定义起始索引)  
local arr2 = {[1] = "a", [2] = "b", [3] = "c"}  

访问和修改元素

通过索引直接操作:

print(arr[1])  -- 输出 10  
arr[2] = 200   -- 修改第二个元素  
arr[5] = 50    -- 新增第五个元素  

遍历数组

使用 ipairsfor 循环:

-- ipairs 遍历(从 1 到连续整数索引结束)  
for i, v in ipairs(arr) do  print(i, v)  
end  -- 数值 for 循环  
for i = 1, #arr do  print(arr[i])  
end  

获取数组长度

# 操作符返回连续整数索引部分的最大索引值

print(#arr)  -- 若 arr = {10, 20, nil, 40}, 输出 2(因第三位为 nil)  

多维数组

通过嵌套 table 实现:

local matrix = {  {1, 2, 3},  {4, 5, 6}  
}  
print(matrix[1][2])  -- 输出 2  

example:

-- 初始化数组
array = {}
for i=1,3 doarray[i] = {}for j=1,3 doarray[i][j] = i*jend
end-- 访问数组
for i=1,3 dofor j=1,3 doprint(array[i][j])end
end

注意事项

  • 索引从 1 开始:Lua 惯例,但技术上可从任意值开始。
  • 非连续索引:若数组含 nil 空隙,#ipairs 可能不会遍历全部元素。
  • 动态扩展:数组大小无需预先声明,插入新元素会自动扩展。

实用操作示例

插入元素

table.insert(arr, 3, "new")  -- 在位置 3 插入 "new"  

删除元素

table.remove(arr, 2)  -- 移除第二个元素  

排序

table.sort(arr)  -- 默认升序  
table.sort(arr, function(a, b) return a > b end)  -- 降序  

http://www.xdnf.cn/news/16274.html

相关文章:

  • day13 flash
  • 根据字符串数组的顺序重新排序 List顺序
  • 基于深度学习的肺癌肿瘤细胞图像识别与分类系统
  • Node.js 版本兼容问题:minimatch@10.0.3和minio@7.0.28 冲突的解决
  • 图机器学习(20)——欺诈交易检测算法
  • 阿里视频直播解决方案VS(MediaMTX + WebRTC) 流媒体解决方案
  • 从零构建:Jenkins与Kubernetes集成的完整指南
  • 10分钟搭建脚手架:Spring Boot 3.2 + Vue3 前后端分离模板
  • 【C# 找最大值、最小值和平均值及大于个数和值】2022-9-23
  • nat. metab.(IF=20.8)|北医三院徐明教授团队:TGR5抑制脂肪酸摄取预防糖尿病性心肌病的机制新解
  • Spark 之 DataFrame
  • GEMINUS 和 Move to Understand a 3D Scene
  • ElasticSearch基础数据查询和管理详解
  • 7月23日华为机考真题第一题100分
  • 实验室信息管理系统的设计与实现/实验室管理系统
  • Prometheus介绍
  • C/C++中的内存管理
  • [Linux入门] Linux 文件系统与日志分析入门指南
  • arm64架构开发板上调用奥比中光深度摄像头用于视觉测距
  • 判断矩形能否放入多边形内——cad c# 二次开发实现
  • 初识opencv02——图像预处理1
  • 软硬件协同仿真和验证的标准接口协议SCE-MI简介
  • Spring语法2
  • HTML5 网页游戏设计开发——1、HTML基础
  • PowerShell自动化核对AD与HR系统账户信息实战指南
  • 趣玩-Ollama-Llm-Chatrbot
  • Flask框架全面详解
  • DeepSeek Janus Pro本地部署与调用
  • 技术速递|使用 Semantic Kernel 与 A2A 协议构建多智能体解决方案
  • 三大论坛联动,2025合成生物学盛会助力生物制造高质量发展