V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
iambic
V2EX  ›  问与答

请问一个 lua 的问题

  •  
  •   iambic · 2015-08-25 10:53:51 +08:00 · 1929 次点击
    这是一个创建于 3178 天前的主题,其中的信息可能已经有所发展或是发生改变。
    t = {1,nil,nil,2}
    print (#t )
    
    t = {1,2,nil,nil}
    print (#t )
    
    t = {nil,nil,1,2}
    print (#t )
    
    t = {1,nil,2,nil}
    print (#t )
    

    输出结果是

    4
    2
    4
    1

    我对 nil 的理解是, table 里边,只要出现 nil ,后边的就不会在计入长度了,之前的 key ,如果没有显示指定,默认从 1 开始,从而上边四个输出应该是 1,2,0,1

    不知道为什么结果和预期的不一样

    5 条回复    2015-08-25 12:34:31 +08:00
    closeid
        1
    closeid  
       2015-08-25 11:09:31 +08:00
    mark 看结果。
    whahuzhihao
        2
    whahuzhihao  
       2015-08-25 11:54:46 +08:00
    貌似没什么规律可循。建议不要用#来获取 table 的长度哦,也不要设置元素为 nil 。还是自己写个 get_length 函数,循环获取长度吧。
    http://www.tuicool.com/articles/Jbyy6n
    clino
        3
    clino  
       2015-08-25 12:08:01 +08:00 via Android
    pil 记得有专门针对这个说过的 去找找
    34D
        4
    34D  
       2015-08-25 12:15:22 +08:00
    不要设置元素为 nil ,如果已定要设置,要自己设置长度。
    iambic
        5
    iambic  
    OP
       2015-08-25 12:34:31 +08:00
    @whahuzhihao 很有用,多谢了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1359 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:36 · PVG 07:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.