首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Lua
江澎涌
创建于2023-08-08
订阅专栏
Lua 从基础到实战,分享如何使用和如何结合到项目中,让项目可以进行部分动态化逻辑。(关注公众号 “江澎涌” 可以第一时间获取最新文章)
等 12 人订阅
共36篇文章
创建于2023-08-08
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
C++ 与 Lua 的协程交互
零、前言 Lua 语言不支持真正的多线程,即不支持共享内存的抢占式线程。 这样的模式能减少一些多线程的问题。多线程的问题源于线程抢占和共享内存,而如果非抢占式线程或者不使用共享内存则能避免多线程问题,
Lua 中使用 C 语言的用户自定义类型——userdata
零、前言 经过之前的文章分享,我们已经知道如何通过扩展函数来扩展 Lua 。但这里涉及到一个问题,Lua 脚本中如何使用 C/C++ 中的类型,如何像操作对象一样操作 C/C++ 类型的实例。解决这一
C 函数中如何保存 Lua 的数据
零、前言 在前面的文章中,C 函数操作的数据的生命周期都是在该函数执行期间。有时我们需要保存一些非局部数据,虽然在 C 语言中,我们可以使用全局变量或静态变量来满足非局部变量的持有,但是当我们需要使用
Lua 中编写 C 函数的一些便捷技巧
零、前言 使用 Lua 时,在编写 C/C++ 函数经常需要对栈进行交互,而这中间更多的操作和数组、字符串相关。 一、数组操作的便捷方式 从之前分享的 “Lua 数据类型——表” 文章中知道 Lua
Lua 调用 C 模块中的函数
零、前言 在之前 “Lua 模块与包” 的文章中,介绍了 Lua 通过 require 是如何引入一个模块的,其中 C 模块并未展开分享。今天就分享如何构建和使用一个 C 模块作为 Lua 的引入模块
Lua 调用 C++ 函数
零、前言 从前面分享的 “C++ 调用 Lua 函数” 文章知道,C/C++ 调用 Lua 函数时,是需要按照规则,将参数和函数压入栈中,然后通过 lua_pcall 或 lua_call 调用,最终
C++ 调用 Lua 函数
零、前言 Lua 作为一门脚本语言,可以作为 “配置文件”、“动态逻辑脚本” 等角色作用于宿主程序。 因为他是一门语言,所以他有以下的好处: 1. Lua 会处理语法细节,后续维护简单,并且可以有注释
C++ 与 Lua 交互内存分配
一、lua_State 创建 C/C++ 与 Lua 的交互是通过 lua_State 这一句柄进行交互。我们常规的创建都是通过 luaL_newstate 这一辅助函数,他的源码实现如下: 通过源码
C++ 与 Lua 交互异常处理
一、异常处理 Lua 使用了 C 语言的 setjmp 机制,setjmp 营造了一个类似异常处理的机制。因此大多数 API 函数都可以抛出异常(即调用函数 longjmp)而不是直接返回。 这里关注
C++ 与 Lua 数据交互载体——栈
一、栈 Lua 和 C 之间的通讯主要组件是无处不在的虚拟栈,两者间的数据交换都是通过这个栈进行。 栈中可以保存 Lua 任意类型的值。 1、Lua 和 C 之间的数据交互存在的差异 Lua 是动态类
C++ 集成 Lua
一、Lua 定位 嵌入式语言:C 语言拥有控制权, Lua 语言被用作库 可扩展语言:Lua 语言拥有控制权,C 语言被用作库 无论哪一种,都需要用到 C API 进行交互。 C API 中大多数函数
Lua 调试库( debug )
一、调试库作用 使用调试库可以获取 Lua 环境运行过程中的变量和跟踪代码执行。 调试库主要分为两类函数:自省函数和钩子函数 自省函数:允许检查一个正在运行中的程序,例如活动函数的栈、当前正在执行的代
Lua 协程
一、协程 Lua 中使用半协程的方式进行组织代码。 和线程的最大区别在于,一个多线程程序可以并行运行多个线程,而协程却需要彼此协作运行,即任意指定时刻只能一个协程运行,且只有当正在运行的协程显式地要求
Lua 垃圾回收机制
一、Lua 的垃圾回收机制 Lua 语言使用自动内存管理, 无需像 C、C++ 语言进行手动内存管理。 但是和 java、kotlin 一样,有时也需要外部进行辅助回收,区分哪些资源是可以进行回收的。
Lua 环境(_G 和 _ENV)
一、前言 Lua 是动态语言,无法区分常量和变量。 二、_G Lua 将全局变量保存在一个全局环境的表中,而这个表就是 _G ,因为 _G 是一个表所以可以像其他表一样操作。 值得注意的是,_G._G
Lua 面向对象
一、前言 Lua 中一张表 table 就是一个对象(注意不是类,是对象)。他具有以下的特性: 表和对象都可以拥有状态 表和对象都拥有一个与其值无关的标识(self) 两个具有相同值的对象是两个不同的
Lua 元表和元方法
一、元表 元表可以修改一个值在面对一个未知操作时的行为,Lua 中使用 table 作为元表的承载。 元表只能给出预先定义的操作集合的行为,比类会更加受限制,不支持继承。 Lua 每一个值都可以有元表
Lua 模块与包
一、什么是模块 模块就是一些代码(可以是 Lua 编写的,也可以是 C 语言编写的),这些代码可以通过函数 require 加载,然后创建和返回一个表,这个表就类似命名空间。 所有的标准库都是模块,例
Lua 迭代器
一、迭代器如何运转 迭代器是一种可以遍历一个集合中所有元素的代码结构。 在 Lua 中,迭代器会结合着 for 语法来进行,运行的模式如下图所示 结合代码结构,可以这么理解 等价于 而这套机制可以结合
Lua 编译执行和错误处理
一、编译 Lua 是一门解释型语言,意味着他能执行动态生成的代码,而这主要由于 dofile 和 loadfile 函数的存在。 这两个函数能够让我们的代码加载和执行代码,具体的我们一个个进行分享 1
下一页