一、预备
table(表)、
实现了关联数组(具有特殊索引方式的数组),可以使用数字、字符串或除nil以外的所有类型的值。
table没有固定的大小,可以动态的添加任意数量的对象到table中;
基于table可以以一种简单、统一和高效的方式表示普通数组、符号表、集合、记录、队列和其他数据结构。
table的创建是通过“构造表达式”完成的。如:a = {}; k = "x"; a[k] = 10;
可以将字段名作为索引,如 a.name 等价于 a["name"](而不是a[name])
数组通常使用 1 作为索引的起始值: for i = 1, #a do print(a[i]) end
二、table库的操作
1、table.concat(table, sep, start, end)
concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置
的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都是可选的, 分隔符的默认值是空字符, start的默
认值是1, end的默认值是数组部分的总长.sep, start, end这三个参数是顺序读入的, 所以虽然它们都不是必须参数, 但如果
要指定靠后的参数, 必须同时指定前面的参数.
local org = {
{"www.baidu.com", "202.108.22.5"},
{"www.google.com","74.125.128.147"},
}
local cnt = table.getn(org)
local index = 1
while index <= cnt do
print( table.concat(org[index],"\t") )
index = index + 1
end
输出结构为:
www.baidu.com 202.108.22.5
www.google.com 74.125.128.147
分析: table.concat不能连接嵌套外层的table,只能连接最内层的table
问题:若table以字段名作为索引时table.concat将不起作用?(有待解决)
local org = {
{hostname = "www.baidu.com", ip = "220.120.22.12"},
{hostname = "www.google.com",ip = "67.213.12.32"},
}
2、table.insert(table, pos, value)
table.insert()函数在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾.
local org = {
{ "www.baidu.com", "220.120.22.12"},
{ "www.google.com", "67.213.12.32"},
}
table.insert( org, { "www.test.com", "222.222.222.222"} )
local cnt = table.getn(org)
local index = 1
while index <= cnt do
print( table.concat(org[index],"\t") )
index = index + 1
end
输出结果为:
www.baidu.com 220.120.22.12
www.google.com 67.213.12.32
www.test.com 222.222.222.222
3、table.maxn(table)
table.maxn()函数返回指定table中所有正数key值中最大的key值. 如果不存在key值为正数的元素, 则返回0. 此函数不限
于table的数组部分.
key_value = { [1] = "www.baidu.com", [2] = "www.google.com", [5] = "www.test.com" }
print( table.maxn(key_value ) )
输出结果为: 5
4、table.remove(table, pos)
table.remove()函数删除并返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参
数可选, 默认为table长度, 即从最后一个元素删起.
local org = {
"www.baidu.com", "202.108.22.5",
"www.google.com","74.125.128.147",
}
local cnt = table.getn(org)
local index = 1
while index <= cnt do
print( table.remove(org) )
index = index + 1
end
输出结果为:
74.125.128.147
www.google.com
202.108.22.5
www.baidu.com
TO BE CONTINUE……