详解Lua中的数组概念知识
数组是有序的对象的装置,它可以是包含含有多个行和列的行或多维阵列的集合的单个二维数组。
在Lua中,数组是使用索引表与整数实现的。数组的大小是不固定的,它可以增长基于我们需要受存储器限制。
一维数组
一维数组可以用一个简单的表结构来表示,可以初始化,使用一个简单的for循环读取。如下例子所示。
array = {"Lua", "Tutorial"}for i= 0, 2 do
print(array[i])
end
当我们运行上面的代码之后,将得到下面的输出。
nil
Lua
Tutorial
正如在上面的代码中看到,当我们试图访问索引中是不存在的数组中的元素,则返回nil。在Lua索引通常开始于索引1,但有可能在索引0和小于0,以及创建对象。显示使用负索引数组下面我们初始化使用for循环数组。
array = {}for i= -2, 2 do
array[i] = i *2
endfor i = -2,2 do
print(array[i])
end
当我们运行上面的代码之后,将得到下面的输出。
-4
-2
0
2
4
多维数组
多维数组可以用两种方式来实现。
- 数组的数组
- 一维数组通过控制索引
对于3,3多维阵列如下所示使用数组的数组的例子。
-- Initializing the array
array = {}
for i=1,3 do
array[i] = {}
for j=1,3 do
array[i][j] = i*j
end
end-- Accessing the array
for i=1,3 do
for j=1,3 do
print(array[i][j])
end
end
当我们运行上面的代码之后,将得到下面的输出。
1
2
3
2
4
6
3
6
9
对于3,3多维阵列的例子如下所示使用操作索引。
-- Initializing the array
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows do
for col=1,maxColumns do
array[row*maxColumns +col] = row*col
end
end-- Accessing the array
for row=1,maxRows do
for col=1,maxColumns do
print(array[row*maxColumns +col])
end
end
当我们运行上面的代码之后,将得到下面的输出。
1
2
3
2
4
6
3
6
9
正如在上面的例子中看到的,数据是基于索引储存的。也能够将元素以稀疏的方式,它是一个矩阵的工作方式lua的实现。因为它不保存在Lua零值,就可以节省大量的内存,在Lua中任何特殊的技术相比其他编程语言中使用特殊技术。
您可能感兴趣的文章:
- 【PHP基础知识】——PHP数组操作详解
- 手机操作系统知识整理(一):CPU相关概念详解
- 详解Lua中的元表概念
- 背包问题(0-1背包,完全背包,多重背包知识概念详解)
- 数据挖掘概念与技术12--数据立方体的计算和多路数组聚集详解
- java中集合概念知识以及集合和数组的区别
- 如何独立进行数据库设计详解及基本的知识概念
- Java数组知识详解
- GZIP压缩原理分析(12)——第五章 Deflate算法详解(五03) 预备知识(02) 压缩“窗口”概念
- 买不买手机都长知识 国行港行概念详解
- 详解Lua中的表的概念及其相关操作方法
- Java 将文件转为字节数组知识总结及实例详解
- 详解JavaScript中数组的相关知识
- 数组的声明定义以及基础知识详解
- 详解Java中的数组与字符串相关知识
- 详解JavaScript中数组的相关知识
- Java基础知识——Java数组详解
- IP地址基础知识详解
- Map集合、List集合、Array数组基础知识整理
- JAVA数组详解