zoukankan      html  css  js  c++  java
  • Lua 将数组中的某些value设置为nil,打印#数组的长度遇到的问题。

    参考:https://blog.csdn.net/qq_32319583/article/details/53384945
    代码部分

     1 -- 初始化一个数组,数组中不存在为nil
     2 local t = { 1, "a", "a", 2, 4, 5, 6, 7, "a"}
     3 
     4 print("设置前t的长度为 : " .. #t)
     5 
     6 for i=#t,1,-1 do
     7     if t[i] ~= "a" then
     8         t[i] = nil  -- 第一步
     9         -- table.remove(t, i) -- 第二步
    10     end
    11     print(i, t[i])
    12 end
    13 
    14 print("-------分割线----------")
    15 
    16 for k,v in pairs(t) do
    17     print(k,v)
    18 end
    19 print("-------分割线----------")
    20 print("设置后t的长度为 : " .. #t)

    看注释标有第一步的输出打印

    设置前t的长度为 : 9
    9	a
    8	nil
    7	nil
    6	nil
    5	nil
    4	nil
    3	a
    2	a
    1	nil
    -------分割线----------
    2	a
    3	a
    9	a
    -------分割线----------
    设置后t的长度为 : 9
    

    看注释第二步的输出打印

    设置前t的长度为 : 9
    9	a
    8	a
    7	a
    6	a
    5	a
    4	a
    3	a
    2	a
    1	a
    -------分割线----------
    1	a
    2	a
    3	a
    -------分割线----------
    设置后t的长度为 : 3
    

    结论:
    如果单纯将数组中的值设为nil,#t的长度可能不会变
    要想得到正确的结果,最好用table.remove(t, k)

  • 相关阅读:
    java 如何判断邮箱是否正确
    Android SDK Manager无法更新的解决
    洛谷P1162
    真 随笔
    初始化结构体
    Linux mkdir -p 后出现permission denied问题
    校赛F
    HDU1022
    UVa156
    HDU1060
  • 原文地址:https://www.cnblogs.com/erdiba/p/12536990.html
Copyright © 2011-2022 走看看