lua中lua判断table是否为空首字符为空

【lua】table是否为空的判断 - 小交响曲 - 博客园
随笔 - 102, 文章 - 0, 评论 - 63, 引用 - 0
在项目的脚本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
不过呢,使用next也有注意事项,一并提一下。for循环pairs一个table就是使用的next实现,不过这个循环过程中,不能赋新的元素给table,不然结果就是未知的,不过你可以在循环的过程中改变已有的值,特别地,可以通过赋为nil来删除一个元素。
1 t = { [1] = 'a', [2] = 'b', [3] = 'c', [32] = 'df', [10] = 'm'}
2 START = 5
3 for k, v in pairs(t) do
print(k, v)
if k & START then
t[k + START] = v
t[k] = nil
11 print('****************')
12 for k, v in pairs(t) do
print(k, v)
next的文档说明如下:当前位置: >
lua字符串路径中获取文件名、路径的模式匹配
时间:    来源:服务器之家    投稿:root
--获取路径
function&stripfilename(filename)
&&&&&&&&return&string.match(filename,&"(.+)/[^/]*%.%w+$")&--*nix&system
&&&&&&&&--return&string.match(filename,&“(.+)\\[^\\]*%.%w+$”)&―&windows
--获取文件名
function&strippath(filename)
&&&&&&&&return&string.match(filename,&".+/([^/]*%.%w+)$")&--&*nix&system
&&&&&&&&--return&string.match(filename,&“.+\\([^\\]*%.%w+)$”)&―&*nix&system
--去除扩展名
function&stripextension(filename)
&&&&&&&&local&idx&=&filename:match(".+()%.%w+$")
&&&&&&&&if(idx)&then
&&&&&&&&&&&&&&&&return&filename:sub(1,&idx-1)
&&&&&&&&else
&&&&&&&&&&&&&&&&return&filename
&&&&&&&&end
--获取扩展名
function&getextension(filename)
&&&&&&&&return&filename:match(".+%.(%w+)$")
local&paths&=&"/use/local/openresty//movies/fffff.tar.gz"
print&(stripfilename(paths))
print&(strippath(paths))
print&(stripextension(paths))
print&(getextension(paths))
[root@localhost cdnlua]# lua testfile.lua&
/use/local/openresty/nginx/movies
fffff.tar.gz
/use/local/openresty/nginx/movies/fffff.tar
转载请注明原文地址:lua脚本中怎么对比字符串_百度知道
lua脚本中怎么对比字符串
脚本中的对比是不是和编码有关,
提问者采纳
a&print(a&==&local&=&=&&def&abc&b&&quot不需要 直接用全等对比就好了local&nbsp
提问者评价
其他类似问题
为您推荐:
lua的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 lua 字符串判断 的文章

 

随机推荐