Lua判断Table是否为空的方法(空的table即{})
判断方法结论:
a={}
if next(a) ~=nil then dosomething end
最近在项目里面大量使用的lua,其中lua的table是lua中重要的数据结构,可以被用来当做C++中的数组,vector,map来使用。
如何判断lua中的table是否是空的table呢?
一开始我没动脑子,是这样写的:
a={}
if a ==nil then dosomething end
这个方法错误是显而易见的,在lua中a其实是一个指针,指向了table的结构,所以这个方法其实是比较地址是否为空,显然错了。
之后我改进了下,代码如下:
a={}
if a=={} then dosomething end
仔细一看上面的改进,相当于没改,这里的a指针比较的还是一个匿名的地址,肯定是false。
之后我这样想,空table的size肯定为0,那我直接判断表的大小不就完了嘛,于是我借助#操作符,代码改进为:
a={}
if #a==0 then dosomething end
但是问题来了,#操作符要求table中的项都不为nil,悲剧!之后我想到了table.maxn内置函数,于是代码继续改成:
a={}
if table.maxn(a) == 0 then dosomething end
不容易啊,程序可以跑了,但是查阅了下相关资料,maxn函数是根据每一项的hash来判断的,这样写代码也很保险,除非你的table是全数字的键。
最后才想起用泛型方法遍历一个table时使用的内置next函数,代码改进如下:
a={}
if next(a) ~=nil then dosomething end
相关推荐
-
Lua中的table浅析
Lua的table提供了Map的功能,实现了"关联数组",并且整数.字符串甚至nil都可以作为索引/key:table没有固定的大小. 基于table,可以表示普通数组.符号表.集合.记录.队列和其他数据结构. 而Lua也是通过table来解决模块(module).包(package)和对象(Object)的. 例如io.read表示使用"read"来索引table io. 在Lua中,table既不是值也不是"变量",而是对象,可以
-
Lua中对table排序实例
lua中利用到的排序的基本上就是构造函数(table)了,为了便于和C区分开来,我俗称它为表单. 实例:(原理就是LUA集成的冒泡算法) 排序的一般姿势(对于只包含数字或者只包含字符串的简单数组) 复制代码 代码如下: table.sort(test) 扩展版 复制代码 代码如下: table.sort(test, function(a,b) return a.id<b.id end ) 实例一:值排序 1.数组模式 复制代码 代码如下: local test0 ={1,9,2,8,3,7,4,
-
Lua中的table学习笔记
table 在 Lua 里是一种重要的数据结构,它可以说是其他数据结构的基础,通常的数组.记录.线性表.队列.集合等数据结构都可以用 table 来表示,甚至连全局变量(_G).模块.元表(metatable)等这些重要的 Lua 元素都是 table 的结构.可以说,table 是一个强大而又神奇的东西. table 特性 在之前介绍 Lua 数据类型时,也说过了 table 的一些特性,简单列举如下(详情可查看之前的介绍): 1.table是一个"关联数组",数组的索引可以是数字
-
Lua判断Table是否为空的方法(空的table即{})
判断方法结论: 复制代码 代码如下: a={} if next(a) ~=nil then dosomething end 最近在项目里面大量使用的lua,其中lua的table是lua中重要的数据结构,可以被用来当做C++中的数组,vector,map来使用. 如何判断lua中的table是否是空的table呢? 一开始我没动脑子,是这样写的: 复制代码 代码如下: a={} if a ==nil then dosomething end 这个方法错误是显而易见的,在lua中a其实是一
-
JS集成fckeditor及判断内容是否为空的方法
本文实例讲述了JS集成fckeditor及判断内容是否为空的方法.分享给大家供大家参考,具体如下: <script type="text/javascript"> <!-- // Automatically calculates the editor base path based on the _samples directory. // This is usefull only for these samples. A real application shoul
-
smarty模板判断数组为空的方法
本文实例讲述了smarty模板判断数组为空的方法.分享给大家供大家参考.具体如下: 这里主要介绍两种方法: 1. 用count来取得数组的下标个数 下面例子中,如果$array为空则不输出任何数据 {if $array|@count neq 0 } // array is empty {/if} 2. 直接判断 { if $array neq ""} //array is empty {/if} 希望本文所述对大家基于smarty模板的php程序设计有所帮助.
-
C#判断多个文本框是否为空的方法
本文实例讲述了C#判断多个文本框是否为空的方法.分享给大家供大家参考.具体实现方法如下: /// <summary> /// 自定义方法,判断项目中txt标签是否为空 /// </summary> /// <param name="txt">要进行判断为空的标签</param> /// <returns>是否全部都不为空,如果全部都不为空返回 true </returns> bool CheckEmpty(para
-
python简单判断序列是否为空的方法
本文实例讲述了python简单判断序列是否为空的方法.分享给大家供大家参考.具体如下: 假设有如下序列: m1 = [] m2 = () m3 = {} 判断他们是否为空的高效方法是: if m1: ...... if not m2: ...... 希望本文所述对大家的Python程序设计有所帮助.
-
jQuery实现批量判断表单中文本框非空的方法(2种方法)
本文实例讲述了jQuery实现批量判断表单中文本框非空的方法.分享给大家供大家参考,具体如下: 方法一: <script type="text/javascript"> /* * 批量验证表单非空 * 需要非空验证控件的样式class="mustadd" */ $(".mustadd").each(function(){ if($(this).val() == ''){ alert("该项不可为空!"); $(th
-
freemarker判断对象是否为空的方法
FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP.它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等. freemarker中显示某对象使用${name}. 但如果name为null,freemarker就会报错.如果需要判断对象是否为空: <#if name??> -- </#if> 当然也可以通过设置默认值${name!''}来避免对象为空的错误.如果name为空,就以默认值("!"后的字
-
js中定义一个变量并判断其是否为空的方法
js中定义一个变量 var params=null;判断params不为空的方法: 复制代码 代码如下: if(params && params.hasOwnProperty("name")){} 其中:console.info(params);//结果为:Object {}
-
JavaScript判断DIV内容是否为空的方法
1.问题背景 判断div内部是否为空,如果为空,给出无数据提示:否则显示正常页面 2.实现效果图如下所示: 3.设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xh
-
python使用any判断一个对象是否为空的方法
本文实例讲述了python使用any判断一个对象是否为空的方法.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: >>> eth = {"eth0″:"192.168.1.1″} >>> any(eth) True >>> eth = {} >>> any(eth) False 判断list是否为空 传统的方式: 复制代码 代码如下: if len(mylist): # Do somethi
随机推荐
- Java打印和打印预览机制实例代码
- CentOS 安装 Mogodb的步骤(在线&&离线两种)
- 全面了解JS中的匿名函数
- node+express+ejs使用模版引擎做的一个示例demo
- java中 利用正则表达式提取( )内内容
- iOS的UI开发中UITabBarControlle的基本使用教程
- perl use vars pragma使用技巧
- VMware 10 中为CentOS 7添加多网卡并重命名
- JSP中正则表达式用法实例
- Unicode和Python的中文处理
- 截取指定符号之间的字符串(随机读取)delphi实例代码
- MSSQL/MYSQL运行在低权限帐号下的方法(图文设置教程)
- Javascript自定义排序 node运行 实例
- 详解Func<T>与Action<T>区别
- sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析)
- php 提速工具eAccelerator 配置参数详解
- Almp 安卓系统上搭建本地php服务器环境的步骤
- C#折半插入排序算法实现方法
- android电话窃听器(示例代码)
- Android便携式热点的开启状态检测和SSID的获取方法