Lua
文章平均质量分 90
Lua 从基础到实战,分享如何使用和如何结合到项目中,让项目可以进行部分动态化逻辑。
江澎涌
给代码注入属于自己的灵魂
展开
-
C++ 与 Lua 的协程交互
Lua 语言不支持真正的多线程,即不支持共享内存的抢占式线程。这样的模式能减少一些多线程的问题。多线程的问题源于线程抢占和共享内存,而如果非抢占式线程或者不使用共享内存则能避免多线程问题,Lua 同时支持这两种方案。Lua 语言的线程是协作式的,即协程,可以避免因不可预知的线程切换带来的问题。Lua 状态间内存不共享,所以各个状态相互独立运行,可以并行操作。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。原创 2024-02-09 13:37:47 · 1326 阅读 · 0 评论 -
Lua 中使用 C 语言的用户自定义类型——userdata
经过之前的文章分享,我们已经知道如何通过扩展函数来扩展 Lua。但这里涉及到一个问题,Lua 脚本中如何使用 C/C++ 中的类型,如何像操作对象一样操作 C/C++ 类型的实例。解决这一问题就需要用到 userdata 类型(用户数据类型)。完全用户数据(full userdata)轻量级用户数据(light userdata)Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。原创 2024-02-08 11:37:04 · 1116 阅读 · 0 评论 -
C 函数中如何保存 Lua 的数据
在前面的文章中,C 函数操作的数据的生命周期都是在该函数执行期间。C 语言中无法保存普通的 Lua 值。如果 Lua 库函数中使用了全局变量或静态变量来保存一些数据,会导致该库在多个 lua_State 中使用受到约束。(因为每个 lua_State 间是相互独立的,而 C 函数中使用的全局变量和静态变量却是共用的,这里会出现数据混乱问题。注册表上值经过前面文章的学习,可以知道 Lua 内部存储 “非局部数据” ,则通过 “全局变量” 和 “非局部变量”。原创 2023-12-20 14:11:58 · 1012 阅读 · 0 评论 -
Lua 中编写 C 函数的一些便捷技巧
使用 Lua 时,在编写 C/C++ 函数经常需要对栈进行交互,而这中间更多的操作和数组、字符串相关。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-12-19 14:20:15 · 939 阅读 · 0 评论 -
Lua 调用 C 模块中的函数
在之前 “Lua 模块与包” 的文章中,介绍了 Lua 通过require是如何引入一个模块的,其中 C 模块并未展开分享。今天就分享如何构建和使用一个 C 模块作为 Lua 的引入模块。Lua 通过注册 C/C++ 函数,进行感知 C/C++ 函数。一旦 C/C++ 函数用 Lua 表示和存储,Lua 就会通过对其地址的直接引用来调用,Lua 对这些 C/C++ 函数的调用不再依赖于函数名、包的位置以及可见性规则。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)原创 2023-11-27 09:06:13 · 645 阅读 · 0 评论 -
Lua 调用 C++ 函数
从前面分享的 “C++ 调用 Lua 函数” 文章知道,C/C++ 调用 Lua 函数时,是需要按照规则,将参数和函数压入栈中,然后通过lua_pcall或lua_call调用,最终再通过栈获取 Lua 返回的值。同样 “Lua 调用 C++ 函数” 也需要遵循一定规则,而不是所有的 C/C++ 函数均可以进行调用。需要将 C/C++ 函数进行注册,将函数地址提供给 Lua 进行调用。交互过程同样使用了与 C/C++ 调用 Lua 函数时相同类型的栈。原创 2023-11-21 09:52:52 · 166 阅读 · 0 评论 -
C++ 调用 Lua 函数
Lua 作为一门脚本语言,可以作为 “配置文件”、“动态逻辑脚本” 等角色作用于宿主程序。1. Lua 会处理语法细节,后续维护简单,并且可以有注释。2. 可以编写逻辑,达到复杂的配置。如果我们的程序需要进行一些 “下发配置” 时,一般会考虑选择 “json”、“文件” 等形式。但是如果 “配置” 内容较为复杂,则可以考虑 Lua 了,具体可以查看以下分享。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。原创 2023-11-20 14:55:07 · 1014 阅读 · 0 评论 -
C++ 与 Lua 交互内存分配
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-11-17 10:18:33 · 204 阅读 · 0 评论 -
C++ 与 Lua 交互异常处理
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-11-16 14:25:06 · 344 阅读 · 0 评论 -
C++ 与 Lua 数据交互载体——栈
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-10-18 17:30:40 · 212 阅读 · 0 评论 -
C++ 集成 Lua
C API 包括读写 Lua 全局变量的函数、调用 Lua 函数的函数、运行 Lua 代码段的函数、以及注册 C 函数(用于后面可以被 Lua 代码调用)的函数等。通过 C API 就可以打通了C 调用 Lua以及Lua 调用 C的渠道。如果是使用 C 语言的话,则直接使用以下进行引用 Lua 头文件如果使用 C++ 则需要嵌套 extern ,或是直接引用lua.hpp// 或是使用 lua.hpp其实 lua.hpp 内部也就是用 extern 进行嵌套这些头文件。Github传送门。原创 2023-10-16 08:33:45 · 244 阅读 · 0 评论 -
Lua 调试库( debug )
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-10-15 08:20:48 · 2284 阅读 · 0 评论 -
Lua 协程
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-10-14 21:36:31 · 155 阅读 · 0 评论 -
Lua 垃圾回收机制
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-10-13 09:54:26 · 761 阅读 · 0 评论 -
Lua 环境(_G 和 _ENV)
Lua 是动态语言,无法区分常量和变量。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-09-15 23:19:17 · 1805 阅读 · 0 评论 -
Lua 面向对象
Lua 中一张表 table 就是一个对象(注意不是类,是对象表和对象都可以拥有状态表和对象都拥有一个与其值无关的标识(self)两个具有相同值的对象是两个不同的对象,而一个对象可以具有多个不同的值表和对象一样,具有与创建者和被创建者位置无关的生命周期Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-09-13 10:30:47 · 173 阅读 · 0 评论 -
Lua 元表和元方法
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-09-11 07:32:46 · 210 阅读 · 0 评论 -
Lua 迭代器
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-09-06 07:00:00 · 341 阅读 · 0 评论 -
Lua 模块与包
模块就是一些代码(可以是 Lua 编写的,也可以是 C 语言编写的),这些代码可以通过函数require加载,然后创建和返回一个表,这个表就类似命名空间。所有的标准库都是模块,例如mathstring模块使用表来承载模块,有很显著的优点,可以像操作普通表一样操作模块,而且能利用 Lua 语言的所有功能实现额外的功能。例如引入math模块-- 两种书写方式都可以使用-- sin 使用的是弧度,不是角度也可以直接引入模块中的一个函数,例如以下代码。原创 2023-09-07 09:38:12 · 803 阅读 · 0 评论 -
Lua 编译执行和错误处理
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-08-23 07:28:40 · 1316 阅读 · 0 评论 -
Lua 数据文件和序列化
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-08-22 09:12:11 · 415 阅读 · 0 评论 -
Lua 数据结构
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-08-21 10:00:20 · 275 阅读 · 0 评论 -
Lua 位和字节
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-08-17 23:06:51 · 1871 阅读 · 0 评论 -
Lua 日期和时间
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-08-16 08:00:00 · 3120 阅读 · 0 评论 -
Lua 模式匹配
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。原创 2023-08-15 13:13:40 · 493 阅读 · 0 评论 -
Lua 闭包
因为函数在 Lua 中与其他类型具有同等权限,所以也可以 table 中定义。第一种方式,用了匿名函数进行定义,只是归属至表Lib1 = {}endend第二种方式,也可以使用表构造器的一种方式(记录式)创建Lib2 = {end,end第三种方式,只是用了常规的函数定义Lib3 = {}endendLua 中可以给一个变量重新定义一个新的函数,也可以给一个预定义函数重新定义函数。例如,我们可以将 sin 函数的参数从原来的 弧度 单位改为 角度 单位。原创 2023-08-12 21:36:34 · 1679 阅读 · 0 评论 -
Lua 数据类型 - nil
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以第一时间获取到后续文章。原创 2023-08-11 00:20:43 · 315 阅读 · 0 评论 -
Lua 数据类型 —— 字符串
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以第一时间获取到后续文章。原创 2023-08-10 23:03:40 · 816 阅读 · 0 评论 -
Lua 数据类型 —— 函数
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。原创 2023-08-10 12:50:32 · 347 阅读 · 0 评论 -
Lua 数据类型 —— 表
表永远是匿名的,表本身和保存表的变量之间没有固定关系。对于一个表而言,当程序不再有变量指向他时,垃圾收集器会最终删除这个表并重用其占用的内存。Lua 不会进行隐藏拷贝或创建新表,操作的都是指向表的指针。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。原创 2023-08-09 09:04:57 · 434 阅读 · 0 评论 -
Lua 数据类型 —— 数值
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。原创 2023-08-07 23:20:43 · 752 阅读 · 0 评论 -
Lua 数据类型 —— boolean
lua 中只有 false 和 nil 表示假,其他都是表示真。数字 0 和空字符串也表示真。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。原创 2023-08-06 23:04:25 · 791 阅读 · 0 评论 -
Lua 使用 —— IO 操作
Lua 语言是以一个脚本存在,所以他自身不会提供太多和外部交互的机制。需要交互则由宿主提供或是由外部库。接下来分享下如何使用以 iso c 作为宿主,进行标准库的 io 操作。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)本章相关代码传送门公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。原创 2023-08-06 22:30:27 · 1667 阅读 · 1 评论 -
Lua 起航 —— 一些常用基础语法
Lua 起航——常用基础语法原创 2022-10-02 14:30:21 · 966 阅读 · 1 评论 -
Lua 在终端使用交互模式
Lua 在终端上的使用原创 2022-09-27 20:06:29 · 1380 阅读 · 0 评论 -
AndroidStudio插件冲突
AndroidStudio插件冲突:EmmyLua 和 Luanalysis原创 2022-09-25 16:34:15 · 748 阅读 · 0 评论 -
Lua 环境搭建
Lua 环境配置(Mac)原创 2022-09-17 16:49:57 · 2141 阅读 · 0 评论