Lua 打印 Table

之前在 Lua 代码的编写中写过一些打印表的函数用于调试,这次在看 z.lua 的实现中看到了非常完美的打印表的方法,于是在将代码改得更规范后记录一下: 使用 luacheck 检查 Lua 代码中的错误和不规范之处 ...

2023 2月 11 · 1 分钟 · vaaandark

Lua 中的三目运算

在看 skywind3000 大神写的 z.lua 时发现了神秘写法: os.argv = arg ~= nil and arg or {} os.path.sep = windows and '\\' or '/' 不需要怎么思考就能知道这个是三目运算。但是在我认知中,Lua 是不支持三目运算符的,定睛一看才发现这个是通过 Lua 布尔运算中的短路特性模拟的三目运算。 ...

2023 2月 09 · 2 分钟 · vaaandark

垃圾回收

之前学习了 Lua 的 Table 和协程,对 Lua 中另一个重要模块 GC 还有很多疑问,这次就来学习一下。 GC 简介与策略分类 在计算机科学中,垃圾收集(GC)是一种自动内存管理形式。垃圾收集器尝试回收程序分配但不再引用的内存;这样的内存被称为垃圾。 ...

2022 9月 17 · 7 分钟 · vaaandark

如何使用Lua写一个NeoVim插件

之前学习了如何写 Lua 程序,又因为 NeoVim 的插件可以用 Lua 写,所以想学习一下插件开发。 插件目录结构 我们的插件应当有至少两个目录:plugin用于放main代码文件,lua放其余的所有代码。当然,如果我们真的想把所有代码放在同一个文件里面,这也是可以的。但是请不要这样。因此,使用plugin/whid.vim和lua/whid.lua这两个文件就可以了。 ...

2022 8月 18 · 3 分钟 · vaaandark

Lua Coroutine

Lua 的一大特色就是协程的使用,在解释型语言中,如果不考虑嵌入到较为低级的语言(如 C 语言)中,就只需要操作调用栈并保存好上下文状态即可。但是 Lua 并不是一门纯粹依靠字节码的解释型语言,它常常与 C 语言反复嵌套,甚至出现 C 中调用 Lua ,Lua 中再调用 C 代码,,,的情况。一旦 Lua 调用的 C 库企图中断线程,再想恢复,就会是一个难题。好在 Lua 巧妙地解决了这些问题。 ...

2022 5月 13 · 6 分钟 · vaaandark

Lua Table

之前学习 Lua 的时候就对它的 Table 很感兴趣,最近在看 Lua 解释器的源码,因此就想研究一下具体是怎么实现这个 Lua 之中最为重要的数据结构的。 Lua Table 简介 在 Lua 语言之中,数组是 table ,字典是 table ,就连对象、模块、包也是通过 table 实现的: ...

2022 5月 11 · 7 分钟 · vaaandark

Lua入门

最近对脚本语言 Lua 很感兴趣,其一是因为它可以很方便地调用 C 语言库,其二是因为它是很多现代化工具的配置语言(比如 NeoVim ),另外 Lua 的源代码不是很长,因此研究学习难度会比其他语言更低。 ...

2022 3月 23 · 6 分钟 · vaaandark