lua中的table使用陷阱

原创 2017年02月08日 14:10:21

    最近在使用lua开发的过程中,遇到了一个由于语言机制导致的bug,具体表现就是,我的配置文件中存了个两个表项,在用lua加载配置文件内容之后,返回的表长度竟然是1,然后导致后面的判断都出错了,在初次调试这个bug的时候完全是百思不得其解,把配置文件看了又看,确实有两个表项没错,但是通过#运算符得到的表长度始终是1,于是我用公司同事写的一个打印table模块将返回的table的键和值都打印出来看了一下,于是就发现问题了。

    原来在lua中,如果我这样声明:

local a = {}
a[1] = 1
a[2] = 2
a[4] = 4
print(#a)

那么输出的结果就是2,而不是3,这就是比较疑惑的地方了,因为我们明明知道表里面明明有三个元素,但是输出的表长度却是2,这就是因为#这个运算符只能处理下标连续的table,这里我们声明的时候没有下标为3的元素,所以lua在计算长度的时候就不会去看不连续的元素了,这也提醒了我们开发者,对于#操作符一定要慎重使用,否则因为这种问题导致的bug确实挺难调的。
版权声明:本文为博主原创文章,未经博主允许不得转载。

Lua编程笔录--Lua初识及语法四(数组,迭代器,table表)

前言:前面的知识点可以参考  Lua编程笔录--Lua初识及语法一(注释,变量命名,全局/局部变量,数据类型) http://blog.csdn.net/adambieber/article/deta...
  • AdamBieber
  • AdamBieber
  • 2016年11月22日 10:58
  • 812

浅析Lua中table的遍历

当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tb...
  • nnsword
  • nnsword
  • 2013年01月30日 15:35
  • 3438

lua的table库中常用的函数

lua提供了一些辅助函数来操作table。例如,从list中insert和remove元素,对array的元素进行sort,或者concatenate数组中的所有strings。下面就详细地讲解这些方...
  • booirror
  • booirror
  • 2014年10月06日 16:04
  • 25298

Lua基础之table详解

概要:1.table特性;2.table的构造;3.table常用函数;4.table遍历;5.table面向对象...
  • dingkun520wy
  • dingkun520wy
  • 2015年12月13日 15:46
  • 11193

lua数据结构之table的内部实现

lua之table的内部实现
  • zr339361504
  • zr339361504
  • 2016年09月10日 22:00
  • 4475

lua中遍历table的几种方式比较

当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbte...
  • cws1214
  • cws1214
  • 2013年11月07日 15:58
  • 34819

Lua中实现table的打印输出(print table)

介绍如何实现Print一个Table,做测试时比较实用的小函数。
  • HQC17
  • HQC17
  • 2016年09月21日 15:14
  • 6832

lua的table库中的常用函数总结

table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下: (1).table 是一个“关联数组”,数组的索引可以是数字或者是字符串; (2).table 的默认初始索引...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2015年11月03日 18:38
  • 3105

lua序列化table表到文件中

先上代码 function luautil.serialize(t, sort_parent, sort_child) local mark={} local assign={} loca...
  • langresser
  • langresser
  • 2013年07月19日 11:39
  • 3227

LUA中table表长度问题

LUA中table表长度问题
  • qq_32319583
  • qq_32319583
  • 2016年11月28日 21:18
  • 1670
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:lua中的table使用陷阱
举报原因:
原因补充:

(最多只允许输入30个字)