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学习笔记
table 在 Lua 里是一种重要的数据结构,它可以说是其他数据结构的基础,通常的数组.记录.线性表.队列.集合等数据结构都可以用 table 来表示,甚至连全局变量(_G).模块.元表(metatable)等这些重要的 Lua 元素都是 table 的结构.可以说,table 是一个强大而又神奇的东西. table 特性 在之前介绍 Lua 数据类型时,也说过了 table 的一些特性,简单列举如下(详情可查看之前的介绍): 1.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即{})
判断方法结论: 复制代码 代码如下: 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
随机推荐
- CI框架AR操作(数组形式)实现插入多条sql数据的方法
- 除捕获组的语法外,其它的(?...)语法都不是捕获组的验证
- 详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
- Spring boot 基本部署方式
- iOS如何保持程序在后台长时间运行
- Android实现两个ScrollView互相联动的同步滚动效果代码
- JavaScript转换数据库DateTime字段类型方法
- asp 存贮过程 (SQL版asp调用存储过程)
- javascript 数组的定义和数组的长度
- RecyclerView的万能分割线
- JavaScript实现基于十进制的四舍五入实例
- PHP错误提示的关闭方法详解
- 也写一个Ajax.Request类附代码
- 解决 JScript 中使用日期类型数据时出现类型错误的问题
- php在页面中调用fckeditor编辑器的方法
- 用nodejs实现PHP的print_r函数代码
- Mysql用户忘记密码及密码过期问题的处理方法
- MySQL启用慢查询日志记录方法
- 超详细的javascript数组方法汇总
- 详解JavaScript数组和字符串中去除重复值的方法
