Lua table.maxn()

作者: AlbertS | 来源:发表于2016-08-04 16:15 被阅读2757次
    计数.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。
    • 其中官方文档中有一句话,大意是说这个函数的工作原理就是线性的遍历了这个表。

    相关文章

      网友评论

        本文标题:Lua table.maxn()

        本文链接:https://www.haomeiwen.com/subject/fwvqsttx.html