前言#
今天来看一个关于table的一个简单的函数,我们知道Lua数组中的索引一般从1开始,那么数组的length
就等于数组的最大索引,但是当数组下标不是连续时,我们要活的最大索引要怎么办,那就需要使用我们今天所讲的函数了。
内容#
table.maxn()##
- 原型:table.maxn (tab_table)
- 解释:返回一个表
tab_table
中的最大正数索引,如果没有正数索引的话返回0。
Uasge##
- 首先新建一个文件命名为maxntest.lua然后编写如下代码:
-- 各种索引都存在
local tabLanguage = {
up ="Lua",
"c",
"c++",
[100] = "end",
realend = "realend",
[-1] = "haha";
};
for k,v in pairs(tabLanguage) do
print(k,v)
end
print("LUA>>>>>>the maxn of table tabLanguage :", table.maxn(tabLanguage), "\n")
-- 使用默认数字索引
local tabTest1 = {
"c",
"c++",
"php"
};
for k,v in pairs(tabTest1) do
print(k,v)
end
print("LUA>>>>>>the maxn of table tabTest1 :", table.maxn(tabTest1), "\n")
-- 负数索引
local tabTest2 = {
[-1] = "c",
[-100] = "c++",
[-10] = "php",
};
for k,v in pairs(tabTest2) do
print(k,v)
end
print("LUA>>>>>>the maxn of table tabTest2 :", table.maxn(tabTest2), "\n")
-- 非数字索引
local tabTest3 = {
first = "c",
second = "c++",
third = "php"
};
for k,v in pairs(tabTest3) do
print(k,v)
end
print("LUA>>>>>>the maxn of table tabTest :", table.maxn(tabTest3), "\n")
- 运行结果
总结#
- 这个函数比较简单,行为和函数解释一致,不要求索引必须连续,返回一个最大的正数索引。
- 有运行结果可知,当表中只有非数字索引或者负数索引时,函数返回0。
- 其中官方文档中有一句话,大意是说这个函数的工作原理就是线性的遍历了这个表。
网友评论