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]))
    与 load 类似,但如果没有给出文件名,则从文件 filename 或标准输入中获取块。
    10
    loadstring (string [, chunkname])
    类似于 load,但从给定的字符串中获取块。
    11
    next (table [, index])
    允许程序遍历表的所有字段。它的第一个参数是一个表,它的第二个参数是这个表中的一个索引。next 返回表的下一个索引及其关联值。
    12
    pairs (t)
    暂停正在运行的协程。传递给此方法的参数充当恢复函数的附加返回值。
    13
    print (...)
    暂停正在运行的协程。传递给此方法的参数充当恢复函数的附加返回值。
    14
    rawequal (v1, v2)
    检查 v1 是否等于 v2,而不调用任何元方法。返回一个布尔值。
    15
    rawget (table, index)
    获取 table[index] 的实际值,而不调用任何元方法。table 必须是 table;index 可以是任何值。
    16
    rawset (table, index, value)
    将 table[index] 的实际值设置为 value,而不调用任何元方法。table 必须是一个表,索引任何不同于 nil 的值,并且 value 任何 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”字段,则会引发错误。此函数返回表。
    20
    tonumber (e [, base])
    尝试将其参数转换为数字。如果参数已经是数字或可转换为数字的字符串,则 tonumber 返回此数字;否则,它返回零。
    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 - 协程.
  • 模块库

    modules 库提供了在 Lua 中加载模块的基本功能。它直接在全局环境中导出一个函数:require。其他所有内容都导出到表包中。关于模块库的详细信息在前面的章节中有解释Lua - 模块 教程。
  • 字符串操作

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

    Lua 的几乎所有操作都依赖于表。较早的Lua - 表 教程详细介绍了这一点。
  • 文件输入输出

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

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