Skip to content

6 - 标准库

Lua标准标准库提供了一些有用的函数,这些函数是通过 C API 实现在C代码中的。其中有些函数为语言提供了基础服务(如typegetmetatable);有些函数提供了外部服务(例如 I/O 相关);有些函数其实也可以Lua代码中实现,但是因为各种原因其更适合在C中实现(例如table.sort)。

所有的库函数都是通过Lua官方的 C API 实现的,并以独立的 C 模块形式提供。一般情况下,库中的函数是不会将参数的数量调整到其预期的参数列表的。在文档中形如 foo(arg) 的函数在使用的时候就不应当缺省参数。

符号fail的意为一个表示某种错误的假值。(目前fail还是等于nil,但是在未来版本中可能发生变更。推荐在判断它时使用 (not status) 的形式而不是 (status == nil) 。)

到目前为止,Lua中有这些标准库:

  • 基础库(参见6.1);
  • 协程库(参见6.2);
  • 包(参见6.3);
  • 字符串操作库(参见6.4);
  • 基本的 UTF-8 支持(参见6.5);
  • 表操作库(参见6.6);
  • 数学库(参见6.6)(例如 sin、log 等);
  • I/O(参见6.8);
  • OS(参见6.9);
  • 调试工具(参见6.10);

除了基础库和包相关的库,每个库都是以某个全局表或其对象的成员函数的形式提供的。

为了访问这些库,宿主程序中应当调用luaL_openlibs函数以打开所有的标准库。或者可以使用luaL_requiref单独打开某个库,其中可以传入 luaopen_base(基础库)、luaopen_package (包相关库)、luaopen_coroutine (协程库)、luaopen_string (字符串库)、luaopen_utf8 (UTF-8 库)、luaopen_table (表相关库)、luaopen_math (数学库)、luaopen_io (I/O库)、luaopen_os (OS相关库)、以及 luaopen_debug (调试库)。这些函数声明在头文件 lualib.h 中。