Lua table.maxn()

计数.jpg

前言#

今天来看一个关于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")
  • 运行结果
table_maxn.png

总结#

  • 这个函数比较简单,行为和函数解释一致,不要求索引必须连续,返回一个最大的正数索引。
  • 有运行结果可知,当表中只有非数字索引或者负数索引时,函数返回0。
  • 其中官方文档中有一句话,大意是说这个函数的工作原理就是线性的遍历了这个表。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,509评论 0 17
  • Nginx API for Lua Introduction ngx.arg ngx.var.VARIABLE C...
    吃瓜的东阅读 5,844评论 0 5
  • 1. 写在前面 很多时候我们都需要借助一些脚本语言来为我们实现一些动态的配置,那么就会涉及到如何让脚本语言跟原生语...
    杰嗒嗒的阿杰阅读 3,450评论 9 31
  • 我家有两只猫两只狗。 其中一只狗狗叫露露,因为小学时有一篇文章里的狗叫路易斯。露露每天只有入夜了才回家上班,早上天...
    风烟依旧平楚阅读 294评论 0 0
  • 今天看了一篇文章,名为最好的修养是明知不问,文中的一个同事喜欢关心别人的私事,一次关心另一同事的离婚事宜被怼...
    椿湫十载阅读 756评论 0 2