6 标准库

标准库提供了一些有用的函数,它们都是直接用 C API 实现的。其中一些函数提供了原本语言就有的服务(例如,typegetmetatable);另一些提供和“外部”打交道的服务(例如 I/O );还有些本可以用 Lua 本身来实现,但在 C 中实现可以满足关键点上的性能需求(例如 table.sort)。

所有的库都是直接用 C API 实现的,并以分离的 C 模块形式提供。目前,Lua 有下列标准库:

  • 基础库 (§6.1);
  • 协程库 (§6.2);
  • 包管理库 (§6.3);
  • 字符串控制 (§6.4);
  • 基础 UTF-8 支持 (§6.5);
  • 表控制 (§6.6);
  • 数学函数 (§6.7) (sin ,log 等);
  • 输入输出 (§6.8);
  • 操作系统库 (§6.9);
  • 调试库 (§6.10). 除了基础库和包管理库,其它库都把自己的函数放在一张全局表的域中,或是以对象方法的形式提供。

要使用这些库,C 的宿主程序需要先调用一下luaL_openlibs 这个函数,这样就能打开所有的标准库。或者宿主程序也可以用luaL_requiref 分别打开这些库:

  • luaopen_base(基础库),
  • luaopen_package(包管理库),
  • luaopen_coroutine(协程库),
  • luaopen_string(字符串库),
  • luaopen_utf8(UTF8 库),
  • luaopen_table (表处理库),
  • luaopen_math(数学库),
  • luaopen_io(I/O 库),
  • luaopen_os (操作系统库),
  • luaopen_debug(调试库)。

这些函数都定义在 lualib.h中。