0%

很多 Go 的开源软件都使用 Cobra 库来构建自己的命令行(CLI)应用程序,这些开源软件包括 KubernetesHugo 等等。这篇文章会对 Cobra 库的使用做一个基本介绍。

阅读全文 »

Lua 不支持真正的多线程,即不支持共享内存的抢占式线程。Lua 语言的线程(也就是所谓的协程)是协作式的,因此可以避免因为不可预知的线程切换而带来的问题,而且 Lua 状态之间不共享内存,这也为 Lua 实现并行化提供了很好的基础。

这篇文章将深入介绍 Lua 的线程以及 lua_State 数据结构。

阅读全文 »

反射是程序用来检查和修改自身某些部分的能力。Lua 语言本身支持一部分反射能力,而调试库也提供了相关能力。虽然调试库提供的并不是 Lua 语言的调试器,但是其提供了编写我们自己调试器所需要的不同层次的所有底层机制。调试库与其他库不同,必须被慎重使用,因为某些功能性能不高,而且调试库会打破语言的一些固有限制。

阅读全文 »

迭代器是一种可以让我们遍历一个集合中所有元素的代码结构,这篇文章将介绍 Lua 的迭代器机制,而泛型 for 正是为简化迭代器的使用而设计的。之后则将介绍 Lua 的元表,元表的功能非常强大,通过元表,可以实现其他编程语言中 运算符 重载的效果、或者实现面向对象编程的 继承

阅读全文 »

虽然 Lua 被称为解释型语言,但是 Lua 总是在运行代码前先预先编译源码为中间代码。解释型语言的区分并不在于源码是否编译,而在于是否有能力执行动态生成的代码。正是由于dofile 这样的函数存在,才使得 Lua 能够被称为解释型语言。

这篇文章将介绍 Lua 的编译执行原理以及 Lua 的模块/包管理机制。

阅读全文 »