Lua脚本语言
文章平均质量分 74
Lua基础
森明帮大于黑虎帮
记录学习过程,分享学习心得,欢迎学习交流!
展开
-
lua学习笔记
lua学习笔记原创 2022-10-09 23:50:36 · 3340 阅读 · 30 评论 -
全局变量和局部变量(local variable)
全局变量和局部变量原创 2022-10-06 23:01:24 · 2293 阅读 · 1 评论 -
LUA表的排序,table.sort()的使用
LUA表的排序,table.sort()的使用原创 2022-09-16 22:52:50 · 3675 阅读 · 2 评论 -
面向对象程序设计关于Lua的初识之类
面向对象程序设计关于Lua的初识之类原创 2022-09-13 20:14:41 · 224 阅读 · 1 评论 -
面向对象程序设计关于Lua的初识
面向对象程序设计关于Lua的初识原创 2022-08-25 19:45:01 · 217 阅读 · 3 评论 -
Lua中and、or的一些正常、特殊用法
Lua中的逻辑运算符:与(and)、或(or)和非(not),与其他语言的逻辑运算符功能一致,这里不做赘述。只说一点,所有的逻辑运算符将false和nil视为假,其他任何东西视为真,0也视为真。原创 2022-08-25 19:51:20 · 4846 阅读 · 3 评论 -
表相关的元方法(Metamethods)、The __index Metamethod
关于算术运算和关系元运算的 `metamethods` 都定义了错误状态的行为,**他们并不改变语言本身的行为**。针对在两种正常状态:表的不存在的域的查询和修改, Lua 也提供了改变 tables 的行为的方法。......原创 2022-08-18 09:29:16 · 165 阅读 · 3 评论 -
C++和Lua命令里面的EQ、NE、GT、LT、GE、LE分别代表含义
C++和Lua命令里面的EQ、NE、GT、LT、GE、LE分别代表含义原创 2022-08-11 18:51:32 · 3014 阅读 · 8 评论 -
关系运算的元方法(Metamethods)
Metatables 也允许我们使用 metamethods: __eq(等于), __lt(小于),和__le(小于等于)给关系运算符赋予特殊的含义。对剩下的三个关系运算符没有专门的 metamethod,因为 Lua 将 a ~= b 转原创 2022-08-16 09:31:02 · 246 阅读 · 9 评论 -
算术运算的元方法 Metamethods
这一部分我们通过一个简单的例子介绍如何使用 `metamethods`。假定我们使用 `table`来描述结合,使用函数来描述集合的**并操作,交集操作, like 操作**。我们在一个表内定义这些函数,然后使用构造函数创建一个集合:......原创 2022-08-15 10:58:15 · 284 阅读 · 8 评论 -
Lua元表和元方法(Metatables and Metamethods)
`Lua` 中的 `table` 由于定义的行为,我们可以对 `key-value` 对执行加操作,访问 `key` 对应的 `value`,遍历所有的 `key-value`。但是我们不可以对两个 `table` 执行加操作,也不可以比较两个表的大小。`Metatables` 允许我们改变 `table` 的行为,例如,使用 `Metatables` 我们可以定义 `Lua` 如何计算两个 `table` 的相加操作 `a+b`。当 `Lua` 试图对两个表进行相加时,他会检查两个表是否有一个表有 `原创 2022-08-13 13:15:38 · 287 阅读 · 11 评论 -
Lua序列化
**序列化通俗一点的解释,就是将数据对象转换为字节流再通过IO输出到文件或者网络,读取的时候再将这些数据重新构造为与原始对象具有相同值得新对象。**我们经常需要序列化一些数据,为了将数据转换为字节流或者字符流,这样我们就可以保存到文件或者通过网络发送出去。我们可以在`Lua`代码中描述序列化的数据,在这种方式下,我们运行读取程序即可从代码中构造出保存的值。...原创 2022-09-19 21:40:05 · 877 阅读 · 4 评论 -
Lua数据文件
`LUA`脚本语言之数据文件与持久化是本文要介绍的内容,当我们处理数据文件的,一般来说,写文件比读取文件内容来的容易。因为我们可以很好的控制文件的写操作,而从文件读取数据常常碰到不可预知的情况。...原创 2022-09-17 23:42:16 · 424 阅读 · 2 评论 -
Lua用table实现各种数据结构-字符串缓冲
`Lua`使用真正的垃圾收集算法,但他发现程序使用太多的内存他就会遍历他所有的数据结构去释放垃圾数据,一般情况下,这个算法有很好的性能(`Lua`的快并非偶然的),原创 2022-08-28 21:26:17 · 513 阅读 · 2 评论 -
Lua用table实现各种数据结构-多维数组
Lua 中有两种表示矩阵的方法,一是“数组的数组”。也就是说, table 的每个元素是另一个 table。创建多维数组有两种方式,第一种是table的嵌套使用。原创 2022-08-09 19:08:42 · 728 阅读 · 3 评论 -
Lua用table实现各种数据结构-数组
`Lua`中的数组和`c`语言的数组差不多,只是`lua`的数组操作都是从1开始的,而不是从0开始的,创建数组可以使任意的下标,但是为了适合`lua`的语言方式,最好从下标1开始创建。因为lua库和长度操作都遵循从下标1开始。在 `lua` 中通过整数下标访问 `table` 中元素,即是数组。然而习惯上, `Lua` 的下标从 1 开始。 Lua 的标准库遵循此惯例,因此你的数组下标必须也是从 1 开始,才可以使用标准库的函数。并且数组大小不固定,可动态增长。......原创 2022-08-08 19:16:14 · 453 阅读 · 10 评论 -
Lua用table实现各种数据结构-队列
虽然可以使用 `Lua` 的 `table` 库提供的 `insert` 和 `remove` 操作来实现队列,但这种方式实现的队列针对大数据量时效率太低,有效的方式是使用两个索引下标,一个表示第一个元素,另一个表示最后一个元素。和c语言类似。......原创 2022-08-07 11:44:46 · 396 阅读 · 4 评论 -
Lua用table实现各种数据结构-链表
`Lua` 中用 `tables` 很容易实现链表,每一个节点是一个 `table`,指针是这个表的一个域`(field)`,并且指向另一个节点`(table)`。在lua中很少用到链表,但是使用`table`很容易实现链表。就如同`C`语言中,一个`table`当做一个节点。每个节点有2个字段,一个字段包含对其他`table`的引用,一个字段是当前节点的`value`。......原创 2022-08-06 10:40:33 · 776 阅读 · 9 评论 -
do end用法的妙处
为什么要使用`do end`,它到底能够解决什么问题呢;首先,语句块不是用`花括号 { }` , 而是 `do` 语句块 `end` 表示语句块的开始和结束。而 `花括号 {}` 表示的为一个 表结构 。原创 2022-07-28 20:05:49 · 370 阅读 · 5 评论 -
require、loadfile、dofile、load、loadstring
require、loadfile、dofile、load、loadstring讲解原创 2022-07-27 19:42:54 · 1134 阅读 · 7 评论 -
Lua函数之非全局函数
Lua非全局函数,Lua中调用一个函数要在调用之前定义,否则出错原创 2022-07-26 12:38:28 · 260 阅读 · 3 评论 -
学习Lua碰到的问题、踩坑记录
一、遍历字典是无序的二、Lua的遍历和C#不同三、同名传参和同名字段四、传参是引用传递五、rawget()和rawset()六、在Windows上安装Lua1.get a binary2.选择自己电脑的版本3.解压文件,(存放文件地址文件夹名全部不要出现中文最佳)4.修改环境变量5.win+R,cmd,输入lua或者lua53后如下即安装完成6.最后intellij idea 中推荐一个EmmyLua,使用安装比较简单,在设置setting里面选择Plugins,查找EmmyLua安装原创 2022-06-04 16:25:26 · 1665 阅读 · 49 评论 -
lua踩坑之浅拷贝与深拷贝
lua之浅拷贝和深拷贝原创 2022-05-26 10:52:50 · 1591 阅读 · 34 评论 -
【游戏客户端与服务器面试题】-- 2022年最新游戏客户端与服务器面试(lua篇持续更新)
【游戏客户端面试题干货】-- 2021年度最新游戏客户端面试干货(lua篇)文章目录一、Lua的8种数据类型二、pairs和ipairs的区别三、lua表常用方式(插入,删除,移动,排序)四、如何实现继承关系(__index)一、Lua的8种数据类型二、pairs和ipairs的区别三、lua表常用方式(插入,删除,移动,排序)四、如何实现继承关系(__index)...原创 2022-05-19 16:13:59 · 6453 阅读 · 46 评论 -
Lua热补丁方案(HotFix)
文章目录一、lua基础之热更新二、hotfix 实现了Lua热更新,仅对函数作替换,保留旧数据三、热更新介绍1.原理2.要点分析3.Lua热更新的实现4._ENV 环境变量5.上值 upvalue6.热更新函数Lua的require函数7.热更新函数Lua的setenv函数8.热更新函数Lua的debug库函数9.深度递归替换所有的upvalue10.实例分析四、Lua脚本热更新方案五、lua热更新1.什么是热更新2.热更新原理第一种:3.热更新原理第二种:一、lua基础之热更新首先,什么是热更新?原创 2022-05-13 10:17:55 · 2095 阅读 · 16 评论 -
【Lua从青铜到王者基础篇】第十五篇:Lua 面向对象
系列文章目录文章目录系列文章目录前言一、Lua 面向对象二、Lua面向对象特征三、Lua 中面向对象四、一个简单实例1.创建对象2.访问属性3.访问成员函数4.完整实例总结前言一、Lua 面向对象 面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。以下几种编程语言都支持面向对象编程:C++JavaObjective-CSmalltalkC# Ruby二、Lua面向对象特征(1) 封装:.原创 2022-04-27 22:57:38 · 442 阅读 · 14 评论 -
【Lua从青铜到王者基础篇】第十四篇:Lua 垃圾回收
系列文章目录文章目录系列文章目录前言一、Lua 垃圾回收二、垃圾回收器函数总结前言一、Lua 垃圾回收Lua 采用了自动内存管理。 这意味着你不用操心新创建的对象需要的内存如何分配出来, 也不用考虑在对象不再被使用后怎样释放它们所占用的内存。Lua 运行了一个垃圾收集器来收集所有死对象 (即在 Lua 中不可能再访问到的对象)来完成自动内存管理的工作。 Lua 中所有用到的内存,如:字符串、表、用户数据、函数、线程、 内部结构等,都服从自动管理。Lua 实现.原创 2022-04-11 11:15:17 · 781 阅读 · 11 评论 -
【Lua从青铜到王者基础篇】第十三篇:Lua 调试(Debug)
系列文章目录文章目录系列文章目录前言一、Lua 调试(Debug)二、另一个实例三、调试类型总结前言一、Lua 调试(Debug)Lua 提供了 debug 库用于提供创建我们自定义调试器的功能。Lua 本身并未有内置的调试器,但很多开发者共享了他们的 Lua 调试器代码。Lua 中 debug 库包含以下函数:上表列出了我们常用的调试函数,接下来我们可以看些简单的例子:function myfunction ()print(debug.traceback("S.原创 2022-04-07 18:31:20 · 1980 阅读 · 15 评论 -
【Lua从青铜到王者基础篇】第十二篇:Lua错误处理
系列文章目录文章目录系列文章目录前言一、Lua 错误处理二、语法错误三、运行错误四、错误处理1.error函数2.pcall函数3.xpcall函数4.debug函数 总结前言一、Lua 错误处理程序运行中错误处理是必要的,在我们进行文件操作,数据转移及web service 调用过程中都会出现不可预期的错误。如果不注重错误信息的处理,就会造成信息泄露,程序无法运行等情况。 任何程序语言中,都需要错误处理。错误类型有:语法错误。运行错误。简单模式在做一.原创 2022-04-05 12:01:03 · 1690 阅读 · 10 评论 -
【Lua从青铜到王者基础篇】第十一篇:Lua文件I/O
系列文章目录文章目录系列文章目录前言一、Lua 文件 I/O二、简单模式三、完全模式总结前言一、Lua 文件 I/O Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法简单模式在做一些简单的文件操作时较为合.原创 2022-03-31 15:30:19 · 877 阅读 · 13 评论 -
【Lua从青铜到王者基础篇】第十篇:Lua协同程序(coroutine)
系列文章目录文章目录系列文章目录前言一、什么是协同(coroutine)二、线程和协同程序区别三、基本语法四、生产者-消费者问题总结前言一、什么是协同(coroutine)Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。协同是非常强大的功能,但是用起来也很复杂。二、线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运.原创 2022-03-29 15:55:10 · 319 阅读 · 17 评论 -
【Lua从青铜到王者基础篇】第九篇:Lua元表
系列文章目录文章目录系列文章目录前言一、Lua 元表(Metatable)二、__index 元方法三、__newindex 元方法四、为表添加操作符五、__call 元方法六、__tostring 元方法总结前言一、Lua 元表(Metatable)在 Lua table 中我们可以访问对应的 key 来得到 value 值,但是却无法对两个 table 进行操作(比如相加)。因此 Lua 提供了元表(Metatable),允许我们改变 table 的行为,每.原创 2022-03-28 12:18:52 · 450 阅读 · 10 评论 -
【Lua从青铜到王者基础篇】第八篇:Lua表和模块与包
系列文章目录文章目录系列文章目录前言一、Lua表1.table(表)的构造2.table(表)的操作1.table连接2.table插入和移除3.table排序4.table最大值二、Lua模块与包总结前言一、Lua表table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。Lua table 是不固定大小的,你可以根据自己需要进行扩.原创 2022-03-15 10:19:01 · 1156 阅读 · 9 评论 -
【Lua从青铜到王者基础篇】第七篇:Lua数组和迭代器
系列文章目录文章目录系列文章目录前言一、Lua数组1.一维数组2.多维数组二、Lua迭代器1.泛型for的迭代器2.无状态的迭代器3.多状态的迭代器总结前言一、Lua数组数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。Lua 数组的索引键值可以使用整数表示,数组的大小不是固定的。1.一维数组一维数组是最简单的数组,其逻辑结构是线性表。一维数组可以用for循环出数组中的元素,如下实例:print("---------------.原创 2022-03-10 12:41:58 · 935 阅读 · 29 评论 -
【Lua从青铜到王者基础篇】第六篇:Lua字符串
系列文章目录文章目录系列文章目录前言一、Lua字符串1.语法2.实例3.转义字符4.字符串操作函数1.字符串全部转换为大写字母2.字符串全部转换为小写字母3.字符串替换4.字符串查找5.字符串反转6.字符串格式化7.字符串转换并连接8.计算字符串长度9.返回字符串string的n个拷贝10.链接两个字符串11.返回一个迭代器函数12.寻找源字串str中的第一个配对.总结前言一、Lua字符串1.语法 字符串或串(String)是由数字、字母.原创 2022-03-09 13:18:23 · 442 阅读 · 18 评论 -
【Lua从青铜到王者基础篇】第五篇:Lua运算符
文章目录前言一、Lua运算符总结前言一、Lua运算符总结以上就是今天要讲的内容,本文介绍了Lua运算符,运算符的熟练运用,学会这些对于以后的操作会变得非常的便捷,所以我们务必掌握。另外如果上述有任何问题,请懂哥指教,不过没关系,主要是自己能坚持,更希望有一起学习的同学可以帮我指正,但是如果可以请温柔一点跟我讲,爱与和平是永远的主题,爱各位了。...原创 2022-03-07 14:34:06 · 502 阅读 · 24 评论 -
【Lua从青铜到王者基础篇】第四篇:Lua循环控制和函数
文章目录系列文章目录前言一、Lua循环控制1.Lua if语句1.语法2.实例2.Lua if...else语句1.语法2.实例3.Lua if...else嵌套语句1.语法2.实例4.Lua if...elseif...else 语句1.语法2.实例二、Lua函数1.引入库2.读入数据 总结前言一、Lua循环控制Lua 编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指.原创 2022-03-06 17:09:55 · 1065 阅读 · 15 评论 -
【Lua从青铜到王者基础篇】第三篇:Lua变量和循环
系列文章目录文章目录系列文章目录前言一、Lua变量二、Lua赋值语句三、Lua流程控制总结前言一、Lua变量变量在使用前,需要在代码中进行声明,即创建该变量。编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,哪怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的.原创 2022-03-04 14:33:01 · 890 阅读 · 45 评论 -
【Lua从青铜到王者基础篇】第二篇:Lua基本语法和数据类型
系列文章目录文章目录系列文章目录前言🌲一、Lua基本语法1.第一个 Lua 程序2.交互式编程3.脚本式编程4.注释1.单行注释2.多行注释1.多行注释注意事项5.标识符6.关键词7.全局变量🌳二、Lua数据类型1.nil(空)2.boolean(布尔)3.number(数字)4.string(字符串)5.function(函数)6.table(表)7.thread(线程)8.userdata(自定义类型)🌲🌳🌴🌵总结前言🌲一、Lua基本语法1.第一个 Lua 程序Lua 学习起来非常.原创 2022-03-03 11:19:25 · 785 阅读 · 38 评论 -
【Lua从青铜到王者基础篇】第一篇:Lua初始教程和环境安装
系列文章目录文章目录系列文章目录前言一、lua教程1.设计目的2.Lua特性3.Lua应用场景4.第一个Lua程序二、使用步骤1.引入库2.读入数据总结前言一、lua教程Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,.原创 2022-02-28 15:18:28 · 3049 阅读 · 8 评论