![](https://img-blog.csdnimg.cn/78de4710647d410fac5c75a7bce94750.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
lua 💧
文章平均质量分 74
cc
骆言
萌新
https://lawsssscat.blog.csdn.net/article/details/104581136
展开
-
【笔记】 Lua - upvalue 和 闭包
首先, lua 函数存在 闭包。在闭包内,内嵌函数可以访问外包函数已经创建的局部变量,而这些局部变量则称为该内嵌函数的外部局部变量(或者upvalue)。function f1(n) -- 函数参数也是局部变量 local function f2() print(n) -- 引用外包函数的局部变量 end return f2 end g1 = f1(1979) g1() -- 打印出1979 g2 = f1(500) g2() -- 打印出500。原创 2019-12-07 14:09:37 · 350 阅读 · 0 评论 -
【笔记】Lua - C
这里的文件位置必须放在 lualib 的 src 目录下,否则头文件找不到,需要额外处理。然后把新加的东西 到 linit.c 中注册、并且在 lualib.h 中加上函数声明。首先,在 lualib 项目的源文件中添加一个 C 文件 " testlib.c "传入的 lua_State 结构体是 lua 中的一个。然后,启动 控制台项目,输入 test 就能看到返回了。然后,定义一个 luaL_Reg 结构体 的数组。这个结构体里面包括了所有注册的接口。然后,定义函数给初始化函数调用。原创 2022-10-23 15:41:13 · 1276 阅读 · 0 评论 -
【笔记】 lua - 正则匹配
Lua 中的匹配模式直接用常规的字符串来描述。它用于模式匹配函数 string.find, string.gmatch, string.gsub, string.match。当匹配成功时,由 捕获物 匹配到的字符串中的子串被保存起来用于未来的用途。” 作用到字符串 “flaaap” 上,将产生两个捕获物: 3 和 5。’ 将锚定从字符串的开始处做匹配。模式 指一个模式条目的序列。$’ 出现在其它位置,它们均没有特殊含义,只表示自身。’ 将使匹配过程锚定到字符串的结尾。这样的模式串没有意义。原创 2022-10-22 22:41:16 · 3182 阅读 · 2 评论 -
Lua - windows 中执行乱码(cmd、bash、vscode)
通过 vscode 编译 a.lua 文件,通过 cmd 和 bash 执行 lua 来运行脚本,结果如下;国内 window cmd 下默认编码时GBK,而 windows 中 lua 也是以此作为默认编码的。bash 中 lua 依然以 gbk 格式执行 a.lua 文件。cmd 中 lua 以 gbk 格式执行 a.lua 文件。bash 以 utf8 格式读取 a.lua 文件。更改 a.lua 编码(utf8 => gbk)cmd 以 gbk 格式读取 a.lua 文件。更改 lua 默认编码。原创 2022-10-21 20:16:24 · 2015 阅读 · 2 评论 -
【笔记】lua - 协程
文章目录创建与合并分支分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完...原创 2019-12-05 11:28:22 · 294 阅读 · 0 评论 -
【笔记】lua - 开发环境(lua/luac编译、集成)
安装时需要勾选 “使用 C++ 的桌面开发”(需要包含 MSVC、CMake等编译c、c++的东西)把 lua 源码复制进项目目录,添加现有项目,原创 2022-10-05 21:47:26 · 3872 阅读 · 0 评论 -
【笔记】lua - 扩展 require 的探索:从调用 require 的文件相对路径加载模块(关键字:require current relate path)
如果习惯用其他模块加载机制的语言(如:c/c++、js)会发现lua的模块加载规则很奇怪,它始终是根据初始文件的路径来调用模块的。就这种情况我直接调用 main.lua 肯定是会报错,说找不到 “a”, “b”, “c” …需求其实挺简单,调用 require 时候尝试找下调用文件所在目录即可,自己写一个把(or参考框架?我引入一个第三方模块 thirdy,这个文件又引用其他模块,其他模块又引用其他模块,…又不可能手动的逐个修改第三方代码的 require(一般也不希望修改第三方代码)有没有好点的方法呢?原创 2022-09-22 23:15:11 · 835 阅读 · 1 评论 -
【一文解决】【笔记】lua - 面向对象 - 类设计(构造方法、对象属性、对象方法)
私有对象属性” 实现起来却比较困难,我们只能将私有对象属性塞到Class:New()方法中。以上是基本的 class 定义的语法,完全兼容 lua 的编程习惯。(即我们需要实现private机制,来使得某些对象属性或者对象方法只在这个类内部可见,对象引用它是不可见的)此改变导致原先所有的对象通过 metatable 来共享一份对象方法,变成了所有的对象都拥有自己的对象方法。但 Lua 语言本身甚至没有提供构建对象的语法机制😓,这需要我们自己设计实现一套类的机制。可以定义对象属性赋值、取值时候的函数回调。原创 2022-09-21 22:19:57 · 530 阅读 · 2 评论 -
【笔记】lua
metatable是被译作元表,Lua 中的每个值都可以用一个 metatable。这个 metatable 就是一个原始的 Lua table ,它用来定义原始值在特定操作下的行为。如:控制一个对象做数学运算操作、比较操作、连接操作、取长度操作、取下标操作时的行为;metatable 中还可以定义一个函数,让 userdata 作垃圾收集时调用它。对于这些操作,Lua 都将其关联上一个被称作事件的指定键。原创 2019-11-26 09:07:35 · 471 阅读 · 1 评论