数组
-默认 索引从1开始,默认0为nil(可以指定0开始,或者负数开始)
arry = {"Lua","Tutorial"}
for i=0,2 do
print(arry[i])
end
--结果:nil lua Tutorial
- 多维数组
array = {}
for i=1,3 do
--array[i] ={}
for j=1,3 do
array[i][j]=i*j
print("i=",i,"j=",j,"值:",array[i][j])
end
end
迭代器
- 定义:一种对象,遍历元素,在lua中支持指针类型结构(标指:in)
- 先计算迭代函数,再赋值给状态常量,用控制变量遍历
- ipairs():lua提供的迭代函数,用于迭代数组
重点:泛型for迭代器就是向for返回“迭代函数”(iter)、“迭代常量”(a)、“控制变量”(0)
均由ipair传给for,for再将a和0传到iter()中运行,直到iter()返回的值为nil
function iter (a, i)
i = i + 1
local v = a[i]
if v then
return i, v
end
end
function ipairs (a)
return iter, a, 0
end
–上例中iter就是需要的迭代函数,a就是需要的迭代常量,0为控制变量
–均由ipair传给for,for再将a和0传到iter()中运行,直到iter()返回的值为nil
–for k,v in ipairs(a) 等价于 for k,v in iter,a,0
array = {"第一个","第二个"}
for k,v in ipars(array) do
print(k,v)
end
–k:调用控制变量,v:调用状态常量,ipairs():用于返回迭代函数
–遍历array中每一个元素
定义:不保留任何状态的迭代器(ipairs就是一种无状态迭代器)
使用:只通过控制变量和状态常量查找下一个状态
前言:要理解多状态迭代器就要明白为什么引入多状态迭代器。
原因:当需要储存多个状态信息时,一个状态常量不够用了。(粗俗的说就是一次多取几个,不需要控制变量了)
array = {"第一个","第二个"}
function UseIpair(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