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

  • 相关阅读:
    校内题目T2695 桶哥的问题——吃桶
    一位大佬对学习哲理的思考
    P2845 [USACO15DEC]Switching on the Lights 开关灯
    CF911F Tree Destruction
    CF995C Leaving the Bar
    CF997B Roman Digits
    P1667 数列
    P4035 [JSOI2008]球形空间产生器
    P2679 子串
    P2613 【模板】有理数取余
  • 原文地址:https://www.cnblogs.com/faithfu/p/8876441.html
Copyright © 2011-2022 走看看