zoukankan      html  css  js  c++  java
  • Lua unpack函数用法

    unpack,接受一个table做个参数,然后按照下标返回数组的所有元素

    unpack

    lua 版本 <= 5.1

    local t = {nil , 3}
    retunrn unpack(t)   // nil , 3
    

    table.unpack

    lua 版本 > 5.1

    local t = {nil, 3}
    return table.unpack(t) // nil, 3
    

    关于不定数量参数的处理

    5.1版本及以前可直接处理

    local function fun1(...)
        print(unpack(arg))  
    end
    
    fun1(1,nil,3) //1,nil,3
    

    5.2版本以后需要手动转化

    local function fun2(...)
        local arg = { ... }
        print(table.unpack(arg))
    end
    fun2(1,nil,3) //1,nil,3
    

    table.length问题

    有一个很有意思的问题
    如果参数是{nil, 2, nil}, 就无法正常打印出来
    为什么呢?看了文档,发现是和#table有关

    table的计算方式


    也就是说有nil值的时候,#table的计算结果并不确定

    local function fun(...)
       local arg = {...}
       print(table.unpack(arg))
       for k, v in pairs(arg) do
          print(k, v)
       end
       print(arg [1],arg[2],arg[3], #arg)
       print('***************')
    end
    
    fun(nil, 2, nil)
    fun(1,2,nil)
    fun(1,nil,nil)
    fun(nil,nil,3)
    
    
    
    2	2
    nil	2	nil	0
    ***************
    1	2
    1	1
    2	2
    1	2	nil	2
    ***************
    1
    1	1
    1	nil	nil	1
    ***************
    nil	nil	3
    3	3
    nil	nil	3	3
    ***************
    

    总之,table中有nil值时,#table的结果并不确定。
    所以以后使用table的时候,尽量不要设置nil,而是要table.remove

  • 相关阅读:
    python IDE比较与推荐
    一个平庸程序员的想法
    [转载]Malcolm的新书:Outliers
    程序员的编辑器——VIM
    Blender网络资源
    普通人的编辑利器——Vim
    易学易用的Windows PowerShell
    分区表的修复(转)
    云南电信DNS服务器地址
    滇南本草(上)
  • 原文地址:https://www.cnblogs.com/faithfu/p/8876441.html
Copyright © 2011-2022 走看看