Lua - 标准库


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

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

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

基础库

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

先生。 库/方法和目的
1

错误处理

包括错误处理函数,如断言、错误,如Lua - 错误处理中所述。

2

内存管理

包括与垃圾收集相关的自动内存管理功能,如Lua-垃圾收集中所述。

3

dofile ([文件名])

它打开文件并将文件的内容作为块执行。如果没有传递参数,则该函数执行标准输入的内容。错误将传播给调用者。

4

_G

因此,全局变量保存全局环境(即 _G._G = _G)。Lua本身不使用这个变量。

5

getfenv ([f])

返回函数当前使用的环境。f 可以是 Lua 函数或指定该堆栈级别的函数的数字 - 第 1 级是调用 getfenv 的函数。如果给定函数不是 Lua 函数,或者 f 为 0,则 getfenv 返回全局环境。f 的默认值为 1。

6

获取元表(对象)

如果对象没有元表,则返回 nil。否则,如果对象的元表具有“__metatable”字段,则返回关联值。否则,返回给定对象的元表。

7

ipairs (t)

该函数获取表的索引和值。

8

load (func [, 块名])

使用函数 func 加载一个块来获取它的各个部分。每次调用 func 都必须返回一个与先前结果连接的字符串。

9

加载文件([文件名]))

与加载类似,但如果没有给出文件名,则从文件文件名或标准输入中获取块。

10

loadstring(字符串[,块名])

与加载类似,但从给定的字符串中获取块。

11

下一个(表[,索引])

允许程序遍历表的所有字段。它的第一个参数是一个表,第二个参数是该表中的索引。next 返回表的下一个索引及其关联值。

12

对(吨)

暂停正在运行的协程。传递给此方法的参数充当恢复函数的附加返回值。

13

打印 (...)

暂停正在运行的协程。传递给此方法的参数充当恢复函数的附加返回值。

14

原始等于 (v1, v2)

检查 v1 是否等于 v2,而不调用任何元方法。返回一个布尔值。

15

rawget(表,索引)

获取 table[index] 的真实值,而不调用任何元方法。表必须是表;索引可以是任何值。

16

原始集(表、索引、值)

将 table[index] 的实际值设置为 value,而不调用任何元方法。table 必须是一个表,索引任何不同于 nil 的值,并且赋值任何 Lua 值。该函数返回表。

17 号

选择(索引,...)

如果索引是数字,则返回参数编号索引之后的所有参数。否则,index 必须是字符串“#”,并且 select 返回它收到的额外参数的总数。

18

setfenv(f,表)

设置给定函数要使用的环境。f 可以是 Lua 函数或指定该堆栈级别的函数的数字 - 第 1 级是调用 setfenv 的函数。setfenv 返回给定的函数。作为一种特殊情况,当 f 为 0 时,setfenv 会更改正在运行的线程的环境。在这种情况下,setfenv 不返回任何值。

19

setmetatable(表,元表)

设置给定表的元表。(您无法从 Lua 更改其他类型的元表,只能从 C 更改。)如果 metatable 为 nil,则删除给定表的元表。如果原始元表具有“__metatable”字段,则会引发错误。该函数返回表。

20

tonumber (e [, 基数])

尝试将其参数转换为数字。如果参数已经是数字或可转换为数字的字符串,则 tonumber 返回该数字;否则,返回 nil。

21

弦 (e)

接收任何类型的参数并将其转换为合理格式的字符串。要完全控制数字的转换方式,请使用 string.format。

22

类型(五)

返回其唯一参数的类型,编码为字符串。该函数的可能结果是“nil”(字符串,而不是值 nil)、“number”、“string”、“boolean”、“table”、“function”、“thread”和“userdata”。

23

解包(列表[,i [,j]])

返回给定表中的元素。

24

_版本

一个全局变量(不是函数),保存包含当前解释器版本的字符串。该变量的当前内容是“Lua 5.1”。

25

协程

包括Lua-Coroutines中解释的协程操作函数。

模块库

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

字符串操作

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

表操作

Lua 的几乎每一个操作都依赖于表。早期的Lua - Tables教程详细介绍了这一点。

文件输入和输出

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

调试设施

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