Lua 标准库

Lua 标准库利用 C 语言 API 实现并提供了丰富的函数,它们内置于 Lua 语言中。该标准库不仅可以提供 Lua 语言内服务,还能提供外部服务,比如文件或数据库的操作。

这些标准库使用标准的 C API 接口实现,它们作为独立的 C 语言模块提供给使用者。主要包括以下的内容:

  • 基本库,包括协程子库
  • 模块库
  • 字符串操作
  • 表操作
  • 数学计算库
  • 文件输入与输出
  • 操作系统工具库
  • 调试工具库

基本库

在本教程中,我们已经在很多地方都使用了基本库的内容。下面的表中列出了相关的函数与链接。

S.N. 库或者方法
1 错误处理库,包括错误处理函数,比如 assert,error等,详见错误处理
2 内存管理,包括与垃圾回收相关的自动内存管理的内容,详见垃圾回收
3 dofile([filename]),打开指定文件,并将文件内容作为代码执行。如果没有传入参数,则函数执行标准输入的内容。错误会传递至函数调用者。
4 _G,全局变量,它存储全局的环境。Lua 本身不使用此变量。
5 getfenv([f]),返回指定函数使用的当前环境(作用域),可以通过函数名或栈深度值指定函数。 1 表示调用 getfenv 的函数。如果传入的参数不是函数或者 f 为 0,则返回全局环境。f 的默认值为 1。
6 getmetatable(object):如果对象没有元表,则返回 nil。如果对象的元表有 __metable 域,则返回该值;否则返回对象的元表。
7 ipairs(t),用于遍历表,此函数返回三个值:next 函数,表 t, 以及 0。
8 load(func[,chunkname]),使用函数 func 加载一个块(代码块),每次调用func必须返回与先前的结果连接后的字符串
9 loadfile([filename]),与 load 函数相似,此函数从文件中或标准输入(没指定文件名时)读入代码块。
10 loadstring(string,[,chunkname]),与 load 类似,从指定字符串中获得代码块。
11 next(table[,index]),此函数用于遍历表结构。第一参数为表,第二个参数是一个索引值。返回值为指定索引的下一个索引与相关的值。
12 pairs(t),用于遍历表,此函数返回三个值:next 函数,表 t, 以及 nil。
13 print(...),打印输出传入参数。
14 rawequal(v1,v2),判断 v1 与 v2 是否相等,不会调用任何元方法。返回布尔值。
15 rawget(table,index),返回 table[index],不会调用元方法。table 必须是表,索引可以是任何值。
16 rawset(table,index,value),等价于 table[index] = value,但是不会调用元方法。函数返回表。
17 select(index,...),如果 index 为数字n,那么 select 返回它的第 n 个可变实参,否则只能为字符串 "#",这样select会返回变长参数的总数。
18 setfenv(f,table),设置指定函数的作用域。可以通过函数名或栈深度值指定函数。 1 表示调用 setfenv 的函数。返回值为指定函数。特别地,如果 f 为 0,则改变当前线程的运行环境,这时候函数无返回值。
19 setmetatable(table,metatable),设置指定表的元表(不能从 Lua 中改变其它类型的元表,其它类型的元表只能从 C 语言中修改)。如果 metatable 为 nil,则删除表的元表;如果原来的元表有 __metatable 域,则出错。函数返回 table。
20 tonumber(e[,base]),将参数转换为数值。如果参数本身已经是数值或者是可以转换为数值的字符串,则 tonumber 返回数值,否则返回 nil。
21 tostring(e),将传递的实参以合理的格式转换为字符串。精确控制字符串的转换可以使用 string.format 函数。
22 type(v),以字符串的形式返回输入参数的类型。该函数的返回值可以取字符串:nil,number,string,boolean,table,function,thread,userdata。
23 unpack(list[,i[,j]]),从指定的表中返回元素。
24 _VERSION,存储当前解释器版本信息的全局变量。该变量当前存储的内容为:Lua 5.1。(译注:与解释器版本有关)
25 协程库,包括协程相关的函数,详见协程

模块库

模块库提供了加载模块的基本函数。它在全局作用域内提供了 require 函数。其它的函数都是通过包管理的模块库提供的。详细内容请参见模块

字符串操作库

详细内容请参见字符串

表操作库

详细内容请参见

数学函数库

详细内容请参见数学函数库

文件 IO 库

详细内容请参见文件 IO

操作系统工具库

详细内容请参见操作系统工具库

调试工具库

详细内容请参见调试