Lua 语言中的数组和迭代器是两个重要的概念。以下是对这两个特性的详细介绍和代码示例:
数组
Lua 中的数组是一种顺序集合,可以包含不同数据类型的元素。Lua 数组的索引从 1 开始,但也可以通过负数进行反向索引。数组的大小是动态的,可以增长和缩小。
一维数组示例代码:
1
2
3
4
|
a = {'lua', 'js', 'c++', 'python', 'java', 'docker'}
for i = 1, #a do
print(a[i])
end
|
这将输出数组中的每个元素,其中 #a
用于获取数组 a
的长度 。
多维数组示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
a = {}
for i = 1, 3 do
a[i] = {}
for j = 1, 3 do
a[i][j] = i * j
end
end
for i = 1, 3 do
for j = 1, 3 do
print(a[i][j])
end
end
|
这段代码创建了一个 3x3 的多维数组,并打印出每个元素 。
迭代器
迭代器用于遍历集合中的元素。Lua 中的迭代器可以是无状态或多状态的。
泛型 for 迭代器示例代码:
1
2
3
4
|
array = {"Google", "Nhooo"}
for key, value in ipairs(array) do
print(key, value)
end
|
这将使用 ipairs
迭代器遍历数组,并打印出索引和对应的值 。
无状态迭代器示例代码:
1
2
3
4
5
6
7
8
9
|
function square(iteratorMaxCount, currentNumber)
if currentNumber < iteratorMaxCount then
currentNumber = currentNumber + 1
return currentNumber, currentNumber * currentNumber
end
end
for i, n in square, 3, 0 do
print(i, n)
end
|
这个示例通过迭代器函数 square
打印数字和它的平方 。
多状态迭代器示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
array = {"Google", "Nhooo"}
function elementIterator(collection)
local index = 0
local count = #collection
return function()
index = index + 1
if index <= count then
return collection[index]
end
end
end
for element in elementIterator(array) do
print(element)
end
|
这个示例创建了一个闭包函数作为迭代器,用于遍历数组并打印每个元素 。
这些示例展示了如何在 Lua 中使用数组和迭代器进行基本操作。通过这些基础知识,您可以进一步探索 Lua 的高级特性和应用。