个人笔记,不对正确性负责,请看官自行斟酌。
table是lua中非常重要的一种类型,有必要对其多了解一些。
一般有两种方法:
使用#或者table.getn获取
这是一种比较简单的方法,但使用过程有许多局限性,主要体现在以下几个方面,如下:
t = {
}
t[1] = 1
t[2] = 2
t[4] = 4
print(#t)
按道理说,应该输出的结果是3,但实际结果确是4,是不很反直觉?先不要急着思考,再看看这个例子:
t1 = {
1,2,3,num4=4,num5=5}
print(#t1)
按一般直觉来说,这里应该输出5,但真的有那么简单吗?显然不是,而是3。为什么呢?因为#操作会从访问所有数字下标的元素,而且仅可以从1开始,中间必须连贯。因此这种方式只能用来操作数组类型的table,即不要设置key值,仅通过table.insert方法操作。
对于字典类型的table,显然不能用上面的方法获取长度,要用一些其他的方法。看下面的例子
function countDictElements(dict)
local count = 0
for k,v in pairs(dict) do
count = count + 1
end
return count
end
local myDict = {
key1 = "value1", key2 = "value2", key3 = "value3" }
print(countDictElements(myDict)) -- 输出表中的键值对数量
代码比较简单,就是通过遍历table的元素,然后挨个数过来。
如果将获取字典长度方法中的pairs换乘ipairs,会发生什么?看下面一个例子
function countDictElements(dict)
local count = 0
for _ in ipairs(dict) do
count = count + 1
end
return count
end
local myDict = {
key1 = "value1", key2 = "value2", key3 = "value3" }
print(countDictElements(myDict)) -- 输出表中的键值对数量
输出结果是:0
为什么呢?因为pairs会遍历table中所有的元素,而ipairs的功能类似于#或者table.getn,仅能遍历数字下标,key值必须连续。所以某种意义上说,上面的方法类似于一个#
文章浏览阅读151次。将展示如何在Photoshop中创建渐变,以及如何在Photoshop中加载和保存预设渐变。渐变是两种或多种颜色(或相同颜色的不同色度)的逐渐混合。渐变的常见用途包括添加光/阴影效果,增加对象的体积以及创建反射性表面,例如金属材料和金。颜色渐变的其他非常流行的用途包括创建抽象背景,添加颜色覆盖图和强调品牌标识。即使是细微的渐变也可以发挥很大作用。更多内容欢迎加入绘画交流群:308 250 976..._xaml如何将输入的文本在点击按钮后保存下来
文章浏览阅读1.5k次。计算机网络技术专业个人职业生涯规划书一 前 言——及时规划职业,做自己人生之舟的船长亚里士多德曾说过:“人是一种寻找目标的动物,他生活的意义仅仅在于是否正在寻找和追求自己的目标。”而这目标有大有小,有短期的也有用尽一生去完成的。目标也有多方面的有涉及学业、家庭、工作等。如今我们正处于20岁左右,无论根据萨帕的职业生涯发展五阶段理论,即成长期(1~14岁)、探索期(15~24岁)、确立期(25~..._计算机网络技术生涯发展报告
文章浏览阅读1.1k次。ListView 加载网络图片是我们经常用到的方式,如果每次滚动ListView就去网络下载图片会非常影响性能(因为网络下载是比较慢的)而且非常耗费流量,所以这里介绍一种使用“内存双缓存+硬盘缓存”的方式来加载图片。实现的效果如下:这里使用了滚动时不去网络下载图片,停止时才加载,所以滚动时显示默认的,注意观察设计思想内存读取速度 > 文件读取速度> 从网络获取的_xml安卓listview 开启双缓存
文章浏览阅读539次,点赞3次,收藏3次。线上服务器宕机问题的解决。如果你也有类似的问题,可以参考下。主要思路用mat 工具分析下.hprof文件_生产服务宕机了,我们通过哪些方式去定位问题
文章浏览阅读1.6k次。这是系列文章中的一篇,阅读本文前请先阅读《Windows下Qt 5.2 for Android开发入门》,以便确保开发环境和作者一致。部分文章被转发/转载却没有注明出处,特此声明:版权所有 foruok ,如需转载敬请注明出处(http://blog.csdn.net/foruok)。我将从实践出发,带领大家一步一步完成在 Android 上的第一个 Qt 应用: Hello Qt_qt kids
文章浏览阅读1.5k次,点赞3次,收藏11次。③只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛的快,不会出现RIP“坏消息传得慢”的问题。②发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。③网络出现故障时,会出现慢收敛现象,俗称“坏消息传得慢”,使更新过程的收敛时间长。②路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。:BGP是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。②路由器交换的信息是当前路由器所知道的全部信息,即。_rip,ospf,bgp三个协议的区别
文章浏览阅读4.3k次,点赞4次,收藏8次。设计软件链接:https://pan.baidu.com/s/1cGu6fW 密码:f2k630G教学视频:https://pan.baidu.com/s/1nvrB6jv 密码:bruv朋友发的,就这么刚!_设计是什么保罗.兰德百度网盘资源
文章浏览阅读838次,点赞17次,收藏27次。还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。图片转存中…(img-lrSLZmoK-1710427356248)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
文章浏览阅读519次。mamp pro mac版是mac平台上最优秀的本地服务器搭配软件,也是最好的mysql开发环境和php开发环境,包含了acintosh、Apache、MySQL和PHP四大开发环境,用户只要轻松点选就能对架站、讨论区、论坛等必备的元件进行安装,让你轻松在mac平台上架设自己的web运行环境。Web运行环境——MAMP Pro功能亮点将wordPress主机发布到您的Live Hosting..._mamp pro 5.7
文章浏览阅读4.9k次。python学习笔记 类型判断,异常处理,终止程序,实例代码:#idle中按F5可以运行代码#引入外部模块 import xxx#random模块,randint(开始数,结束数) 产生整数随机数import randomimport sysimport ossecret = random.randint(1,10)temp = input("请输入一个数字\n")#print(type(temp..._程序抛出异常不一定终止程序
文章浏览阅读583次。C#中添加引用Dll文件必须先注册!!注册方法:regsvr32 *.dll (*代表Dll文件名称)!!_引用dll失败
文章浏览阅读685次,点赞14次,收藏25次。Visual Studio Code 的主要功能之一是其强大的调试支持。VS Code 的内置调试器有助于加速编辑、编译和调试循环。在插件库内搜索python Debugger,安装插件(1)创建debug_learning.py测试文件(2)设置断点(2)启动debug模式(3)debug的各个按钮的介绍以下文档基于内置的 Node.js 调试器,但大多数概念和功能也适用于其他调试器。在阅读有关调试的信息之前,首先创建一个示例Node.js应用程序会很有帮助。您可以按照Node.js演练安_python vs debug