`
7090
  • 浏览: 279589 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转) 关于lua table是否为空的判断

    博客分类:
  • Lua
 
阅读更多
在项目的脚本lua中经常有这样的需求,

1、local a = {}

2、对a进行处理

3、对a是否为空表进行判断

关于对a是否为空表的判断,我发现有些代码如此做:

if a == {} then

这样的结果就是a == {}永远返回false,是一个逻辑错误。因为这里比较的是table a和一个匿名table的内存地址。

也有些代码如此做:

if table.maxn(a) == 0 then

这样做也不保险,除非table的key都是数字,而没有hash部分。

难道真的要遍历table发现有东西就return false跳出才能断定它是否为空吗?这样写至少代码太难看.

网上小搜了一下,发现原来官方手册里早已经给了答案,那就是靠lua内置的next函数

即如此用:if next(a) == nil then

next其实就是pairs遍历table时用来取下一个内容的函数.

在项目的module中最好封装一下,免得module本地也有next函数

于是封装后判断的lua table是否为空的函数如下:

function table_is_empty(t)

        return _G.next( t ) == nil

end

原地址 http://yy1983228.blog.163.com/blog/static/54211491200881092239485/
分享到:
评论

相关推荐

    Lua判断Table是否为空的方法(空的table即{})

    在Lua语言中,判断table是否为空并不是一个直接的操作,因为table在未初始化前就已经存在了,此时它是一个空的table,但不是nil。本文将介绍几种判断Lua table是否为空的方法,并分析各自的优缺点。 在Lua中,初始...

    实用的utility function.zip

    require文件刷新.lua 完美获得小数点第n位.lua ...判断table是否为空nil.lua 获取table中最大数.lua 去除字符串首位空格.lua 获得字符串中字符的个数.lua 复制table不改变原table.lua 输出字符串table.lua

    Lua判断数据类型的方法

    在Lua中,只有false和nil被视为false,其他的值,包括0和空字符串都被视为true。 4. 函数(function):函数在Lua中是第一类值,可以存储在变量中,可以作为参数传递给其他函数,也可以作为其他函数的返回值。这意味...

    Lua检测数组(tabble)中是否包含某个值

    #### 方法二:lua判断一个字符是否存在某个数组 另一种情况是在一个表中查找特定的字符串。以下是一个例子,展示如何实现这一功能: ```lua function in_array(b, list) if not list then return false end ...

    Lua 5.3 参考手册

    - 对于何时使用整数或浮点数,Lua有明确规定并支持自动转换,开发者可根据需求选择是否关注二者之间的差异。 #### 5. 字符串 - 字符串可以包含任意二进制数据,包括空字符`\0`,这意味着Lua对字符串的处理不受特定...

    Lua Quick Guide and Pitfalls

    5. **判断 table 是否为空**:可以通过 `next(table) == nil` 判断 table 是否为空。 #### 十、常见陷阱 1. **if 语句**:除了 `nil` 和 `false` 外的所有值都被视为 `true`。 2. **变量声明与赋值**:变量和函数应...

    Lua参考手册

    Lua支持五种基本数据类型:数字(Number,包括整数和浮点数)、字符串(String)、布尔值(Boolean,只有true和false)、表(Table,一种关联数组,可以当作集合、数组、字典使用)和nil(表示空或不存在的值)。...

    C和C++程序员的Lua快速入门指南

    ### C和C++程序员的Lua快速入门指南 #### Lua嵌入式脚本语言:关键概念与编程模式 Lua作为一种简洁且功能强大的脚本语言,在游戏开发、应用扩展性提升等领域得到了广泛的应用。对于具备C/C++编程背景的开发者来说...

    Lua虚拟机指令集介绍

    Lua虚拟机提供了丰富的表指令,如 `NEWTABLE` 用于创建新表,`SETTABLE` 用于设置表项,`GETTABLE` 用于获取表项等。这些指令使得表的操作既高效又灵活。 #### 算术和字符串指令 除了基本的数据类型操作外,Lua...

    lua实现的2048小游戏

    这涉及到算法编写,如判断相邻方块是否可以合并、移动方块时的边界条件处理、合并后如何更新方块数值等。 4. 用户界面交互:为了显示游戏状态和接收玩家输入,可能需要编写相关的用户界面代码。在Lua控制台版本的...

    Lua代码规范-代码书写规范

    - **空表判断**:使用`next(tb) == nil`检测表是否为空,而不是`#tb == 0`。 - **数组使用**:避免在table中存储nil值,数组下标从1开始,没有0。 ### 6. **字符串使用规范** - **避免内层循环连接**:内层循环中...

    迷你lua 5.1参考手册

    《迷你Lua 5.1参考手册》是一份简洁的总结,旨在帮助读者快速掌握Lua 5.1的关键概念。以下是对这些概念的详细说明: **关键词** - `and`: 逻辑与运算,如果两个表达式都为真,则返回最后一个表达式的值。 - `break`...

    Lua教程(三):值与类型介绍

    在Lua中,除了nil和false之外,其他所有的值都被视为真,这包括数字0和空字符串""。在逻辑判断和条件测试中,boolean类型发挥着重要作用。 number类型代表数值,在Lua中,默认情况下是双精度浮点数。这意味着Lua...

    Lua学习笔记之类型与值

    nil在Lua中常用于标识无效值,比如初始化变量、判断变量是否已经设置等。 2. boolean类型:Lua的布尔类型有true和false两个值。在Lua中,除了false和nil被视为假,其余所有的值都视为真,这与很多其他编程语言的...

    详解Lua中的数据类型

    - 在Lua中,0和空字符串(`""`)都被认为是`true`。这意味着在条件判断时需要特别注意,避免意外的行为。 ```lua if 0 then print("This will not be printed") end if "" then print("Nor this") end ``` ...

    Lua中基本的数据类型、表达式与流程控制语句讲解

    - **boolean**:在条件判断中,`false` 和 `nil` 被视为假,所有其他值被视为真。 - **number**:Lua使用双精度浮点数表示数值,即使是整数。 - **string**:字符串一旦创建不可改变(不可变性),如果需要修改,...

Global site tag (gtag.js) - Google Analytics