6 – 标准库
标准库提供了一些有用的函数,它们都是直接用 C API 实现的。其中一些函数提供了原本语言就有的服务(例如,type
与 getmetatable
);另一些提供和“外部”打交道的服务(例如 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
中。