Lua标准库
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。
操作系统工具库
详细内容请参见操作系统工具库。
调试工具库
详细内容请参见调试。