教程 > Lua 教程 > Lua 类库 阅读:70

Lua 标准类库

Lua 标准库提供了一组丰富的函数,这些函数直接使用 C API 实现,并内置于 Lua 编程语言中。 这些库提供 Lua 编程语言内的服务以及文件和数据库操作等外部服务。

这些内置在官方 C API 中的标准库作为单独的 C 模块提供。 它包括以下内容

  • 基础库,包含协程子库
  • 模块库
  • 字符串操作
  • 表操作
  • 数学库
  • 文件输入和输出
  • 操作系统设施
  • 调试设施

基本类库

我们在整个教程的各个主题下都使用了基本库。 下表提供了相关页面的链接,并列出了本 Lua 教程各个部分中涵盖的功能。

序号 类库/方法 描述
1 错误处理 包括错误处理函数,如断言、错误,如 Lua - 错误处理中所述。
2 内存管理 包括与垃圾收集相关的自动内存管理功能,如 Lua - 垃圾收集中所述。
3 dofile ([filename]) 它打开文件并将文件的内容作为块执行。 如果没有传递参数,则此函数执行标准输入的内容。 错误将传播给调用者。
4 _G 因此是保存全局环境的全局变量(即_G._G = _G)。 Lua 本身不使用这个变量。
5 getfenv ([f]) 返回函数使用的当前环境。 f 可以是 Lua 函数或指定堆栈级别的函数的数字 - 级别 1 是调用 getfenv 的函数。 如果给定函数不是 Lua 函数,或者 f 为 0,则 getfenv 返回全局环境。 f 的默认值为 1。
6 getmetatable (object) 如果对象没有元表,则返回 nil。 否则,如果对象的元表具有“__metatable” 字段,则返回关联的值。 否则,返回给定对象的元表。
7 ipairs (t) 此函数获取表的索引和值。
8 load (func [, chunkname]) 使用函数 func 加载块以获取其片段。 对 func 的每次调用都必须返回一个与先前结果连接的字符串。
9 loadfile ([filename])) 类似于加载,但如果没有给出文件名,则从文件文件名或标准输入中获取块。
10 loadstring (string [, chunkname]) 类似于加载,但从给定的字符串中获取块。
11 next (table [, index]) 允许程序遍历表的所有字段。 它的第一个参数是一个表,它的第二个参数是这个表中的一个索引。 next 返回表的下一个索引及其关联值。
12 pairs (t) 暂停正在运行的协程。 传递给此方法的参数充当恢复函数的附加返回值。
13 print (...) 暂停正在运行的协程。 传递给此方法的参数充当恢复函数的附加返回值。
14 rawequal (v1, v2) 检查 v1 是否等于 v2,而不调用任何元方法。 返回一个布尔值。
15 rawget (table, index) 获取 table[index] 的实际值,而不调用任何元方法。 表必须是表; index 可以是任何值。
16 rawset (table, index, value) table[index] 的实际值设置为 value,而不调用任何元方法。 table 必须是一个表,索引任何不同于 nil 的值,并为任何 Lua 值赋值。 此函数返回表。
17 select (index, ...) 如果 index 是一个数字,则返回参数编号 index 之后的所有参数。 否则,index 必须是字符串“#”,并且 select 返回它接收到的额外参数的总数。
18 setfenv (f, table) 设置给定函数要使用的环境。 f 可以是 Lua 函数或指定堆栈级别的函数的数字 - 级别 1 是调用 setfenv 的函数。 setfenv 返回给定的函数。 作为一种特殊情况,当 f 为 0 时,setfenv 会更改正在运行的线程的环境。 在这种情况下, setfenv 不返回任何值。
19 setmetatable (table, metatable) 设置给定表的元表。 (不能从 Lua 中更改其他类型的元表,只能从 C 中更改。)如果 metatable 为 nil,则删除给定表的元表。 如果原始元表具有“__metatable”字段,则会引发错误。 此函数返回表。
20 tonumber (e [, base]) 尝试将其参数转换为数字。 如果参数已经是数字或可转换为数字的字符串,则 tonumber 返回此数字; 否则,它返回 nil。
21 tostring (e) 接收任何类型的参数并将其转换为合理格式的字符串。 要完全控制数字的转换方式,请使用 string.format
22 type (v) 返回其唯一参数的类型,编码为字符串。 此函数的可能结果是“nil”(字符串,而不是值 nil)、“number”、“string”、“boolean”、“table”、“function”、“thread”和“userdata”。
23 unpack (list [, i [, j]]) 返回给定表中的元素。
24 _VERSION 一个全局变量(不是函数),它包含一个包含当前解释器版本的字符串。 这个变量的当前内容是“Lua 5.1”。
25 Coroutines 包括 Lua - Coroutines 中解释的协程操作函数。

模块库

模块库提供了在 Lua 中加载模块的基本功能。 它直接在全局环境中导出一个函数:require。 其他所有内容都以表格包的形式导出。 有关模块库的详细信息,请参阅前面的 Lua - 模块教程一章

字符串操作

Lua 提供了一组丰富的字符串操作函数。 较早的 Lua - Strings 教程详细介绍了这一点。

表操作

Lua 几乎在其所有操作中都依赖于表。 较早的 Lua - Tables 教程详细介绍了这一点。

文件输入和输出

我们在编程中经常需要数据存储设施,这是由 Lua 中用于文件 I/O 的标准库函数提供的。 它在前面的 Lua - 文件 I/O 教程中讨论过。

调试设施

Lua 提供了一个调试库,它为我们创建自己的调试器提供了所有的原始函数。 它在前面的 Lua - 调试教程中讨论过。

查看笔记

扫码一下
查看教程更方便