11、Lua 数组

Lua 数组

  • Lua 数组
  • 一维数组
  • 多维数组

Lua 数组

数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。
Lua数组的索引键值可以使用整数表示,数组的大小不是固定的。

一维数组

一维数组是最简单的数组,其逻辑结构是线性表。一维数组可以用for循环出数组中的元素,如下实例:

array = {"Lua", "Tutorial"}for i= 0, 2 doprint(array[i])
end

以上代码执行输出结果为:

nil
Lua
Tutorial

正如你所看到的,我们可以使用整数索引来访问数组元素,如果知道的索引没有值则返回nil。
在Lua 索引值是以 1 为起始,但你也可以指定 0 开始。
除此外我们还可以以负数为数组索引值:

array = {}for i= -2, 2 doarray[i] = i *2
endfor i = -2,2 doprint(array[i])
end

以上代码执行输出结果为:

-4
-2
0
2
4

多维数组

多维数组即数组中包含数组或一维数组的索引键对应一个数组。
以下是一个三行三列的阵列多维数组:

-- 初始化数组
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
2
3
2
4
6
3
6
9

不同索引键的三行三列阵列多维数组:

-- 初始化数组
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows dofor col=1,maxColumns doarray[row*maxColumns +col] = row*colend
end-- 访问数组
for row=1,maxRows dofor col=1,maxColumns doprint(array[row*maxColumns +col])end
end

以上代码执行输出结果为:

1
2
3
2
4
6
3
6
9

正如你所看到的,以上的实例中,数组设定了指定的索引值,这样可以避免出现 nil 值,有利于节省内存空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/788784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust 的 termion 库控制终端光标的位置

在控制台应用程序中,固定打印在屏幕的第一行通常涉及到控制终端光标的位置。Rust 标准库本身并不提供直接控制终端光标位置的功能,但你可以使用第三方库如 termion 来实现这个需求。 termion 是一个用于处理终端的 Rust 库,它提供了很多有用…

Java设计模式:代理模式的静态和动态之分(八)

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在软件设计中,代理模式是一种常用的设计模式,它为我们提供了一种方式来控制对原始对象的访问。在Java中&a…

文件操作的详序

1.为什么使用文件? 如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到程序的数据的,如果将数据进行持久化的保存…

【社会救助管理系统】主要设计及拟采用的技术方案

主要设计及拟采用的技术方案 1. 主要设计(1)系统架构设计(2)功能设计(3)安全性设计 2. 设计思想(1)系统架构设计思想(2)功能设计思想(3&#xff0…

python实现TCP服务器

import socket # 创建一个socket对象 server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 获取本地主机名 host socket.gethostname() # 设置一个端口 port 12345 # 绑定端口 server_socket.bind((host, port)) # 设置最大连接数,超过…

Linux 使用管理线程、多线程、分离线程

目录 一、使用线程 1、pthread_create创建线程 2、pthread_join等待线程 主线程获取新线程退出结果 获取新线程退出返回的数组 3、线程异常导致进程终止 4、pthread_exit 5、pthread_cancel 6、主线程可以取消新线程,新线程可以取消主线程吗 二、如何管理线…

使用C#清除字符串结尾的数字的方法参考

假如我们要复制一个物体,一般我们希望复制出来的物体与原来的物体名字不同,而且最好是结尾加上序号,比如原始物体叫abc,那么复制出来的物体叫abc0001。 问题是如果物体本来已经带序号了,比如已经叫abc0005了&#xff0…

59 使用 uqrcodejs 生成二维码

前言 这是一个最近的一个来自于朋友的需求, 然后做了一个 基于 uqrcodejs 来生成 二维码的一个 demo package.json 中增加以依赖 "uqrcodejs": "^4.0.7", 测试用例 <template><div class"hello"><canvas id"qrcode&qu…

nginx + keepalived 搭建教程

1.安装依赖 yum install -y keepalived systemctl start keepalived systemctl enable keepalived 2.配置 a. keepalived.conf配置 global_defs {router_id nginx_server2 # 机器标识(backup节点为nfs_server2) }vrrp_script chk { script "/etc/keepalived/check_po…

信息系统项目管理师——第18章项目绩效域管理(一)

本章节内容属于第四版新增知识&#xff0c;为PMBOK第七版专有&#xff0c;选择、案例、论文都会考&#xff0c;属于比较重要的章节。 选择题&#xff0c;稳定考3分左右&#xff0c;新教材基本考课本原话&#xff0c;需要多读课本&#xff0c;多刷题。 案例题&#xff0c;考的概…

Spring中BeanFactoryPostProcessor详解

目录 功能与作用 使用案例 spring提供的常见BeanFactoryPostProcessor 1.EventListenerMethodProcessor 2.BeanDefinitionRegistryPostProcessor 功能与作用 使用案例 spring提供的唯一BeanDefinitionRegistryPostProcessor 总结 功能与作用 参考BeanFactoryPostProce…

mAP:目标检测算法性能评估参数

在计算机视觉和图像识别领域&#xff0c;特别是在评估目标检测算法的性能时&#xff0c;mAP&#xff08;Mean Average Precision&#xff09;平均精度均值&#xff0c;是一个常用的评价指标。mAP 及其变体是在不同条件下对模型性能进行评估的参数。下面是对这些参数的解释&…

QA测试开发工程师面试题满分问答4: 如何测试购物车功能?

当测试一个购物车时&#xff0c;我们需要采用全面的测试策略&#xff0c;以确保购物车在各种情况下的功能正常、性能良好和用户体验优秀。以下是一个详细的测试计划&#xff0c;包含了各个方面的测试。 功能测试&#xff1a; 添加商品到购物车&#xff1a;验证能否将商品成功添…

入门级深度学习主机组装过程

一 配置 先附上电脑配置图&#xff0c;如下&#xff1a; 利用公司的办公电脑对配置进行升级改造完成。除了显卡和电源&#xff0c;其他硬件都是公司电脑原装。 二 显卡 有钱直接上 RTX4090&#xff0c;也不能复用公司的电脑&#xff0c;其他配置跟不上。 进行深度学习&…

Mac 如何彻底卸载Python 环境?

第一步&#xff1a;首先去应用程序文件夹中&#xff0c;删除关于Python的所有文件&#xff1b; 第二步&#xff1a;打开terminal终端&#xff0c;输入下面命令查看versions下有哪些python版本&#xff1b; ls /library/frameworks/python.framework/versions第三步&#xff1…

网络地址结构

sockaddr_in window 头文件<winsock.h> linux头文件 <netinet/in.h>或者<arpa/inet.h> struct sockaddr_in {short sin_family;u_short sin_port;struct in_addr sin_addr;char sin_zero[8]; } ;in_addr window 头文件<wins…

【算法集训】基础算法:前缀和 | 概念篇

前缀和就是对于顺序表&#xff08;数组、列表&#xff09;来说&#xff0c;计算前面某一段元素的和。 1、部分和 给定一个数组&#xff0c;求某一段子数组的和。 2、朴素做法 int partialSum(int *a, int l, int r) {int i;int s 0;for(i l; i < r; i) {s a[i];}retu…

docker-compose安装jenkins

1、环境准备&#xff1a;准备安装好docker的服务器一台 2、在服务器上创建一个目录用于安装Jenkins mkdir jenkins3、下载好要挂载的&#xff1a;maven、jkd&#xff1b;并将下载好的tar.gz包上传至服务器待安装目录中并解压 tar -xzvf tar -xzvf apache-maven-3.9.6-bin.tar…

【大数据存储】实验3 HBase的安装和基本操作

实验3 HBase的安装和基本操作 实验环境&#xff1a; Ubuntu 22.04.3 Jdk 1.8.0_341 Hadoop 3.2.3 Hbase 2.4.17 一、安装HBase HBase伪分布式安装的配置 1. 配置hbase-env.sh文件 3. 启动运行HBase 4. 停止运行HBase HBase常用的Shell命令 打开hbase 在HBase中创建…

2024年150道高频Java面试题(十五)

29. 请解释 Java 集合框架的基本结构。 Java 集合框架&#xff08;Java Collections Framework&#xff0c;JCF&#xff09;提供了一个统一的架构&#xff0c;用于存储和操作集合数据。它包含接口、实现这些接口的类以及操作集合的工具类。以下是 Java 集合框架的基本结构&…