lua 中table有两种
一种键值对,一种是默认序号类似数组
如
local table1,table2={},{a,b,c,d,e}
table.insert(table1,a=about,b=but,c=can)
table.getn()只能用来获取序号类table长度,不能用于键值对。
数组类型和table类型使用for时也不一样。
ipairs和 pairs也存在区别。
以下是一些文档
第二,范型 for 循环:
前面已经见过一个例子:
-- print all values of array ' a '
for i , v in ipairs ( a ) do print ( v ) end
范型 for 遍历迭代子函数返回的每一个值。
再看一个遍历表 key 的例子:
-- print all keys of table ' t '
for k in pairs ( t ) do print ( k ) end
范型 for 和数值 for 有两点相同:
1、控制变量是局部变量
2.不要修改控制变量的值
再看一个例子,假定有一个表:
days =(" Sunday "," Monday "," Tuesday "," Wednesday ",
" Thursday ",
" Friday "," Saturday "]
现在想把对应的名字转换成星期几,一个有效地解决问题的方式是构造一个反向表: revDays =[[" Sunday "]=1,[" Monday "]=2,
[" Tuesday "]=3,[" Wednesday "]=4,
[" Thursday "]=5,[" Friday "]=6,
[" Saturday "]=7}
下面就可以很容易获取问题的答案了:
x =" Tuesday "
print ( revDays [ x ])
-->3
我们不需要手工,可以自动构造反向表
revDays =()
for i , v in ipairs ( days ) do
revDays [ v ]= i
end
如果你对范型 for 还有些不清楚在后面的章节我们会继续来学习。