在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Lua 5.3参考手册 中标准库内容6.0独立版Luaarglua 会将所有命令行传入的参数放到一张全局表 arg 中。 脚本的名字放在索引 0 的地方, 脚本名后紧跟的第一个参数在索引 1 处,依次类推。 在脚本名前面的任何参数 (即解释器的名字以及各选项) 放在负索引处。 6.1基础函数next(table,[,index])特别指出,你可以用 next(t) 来判断一张表是否是空的。 select(index,...)如果 index 是个数字, 那么返回参数中第 index 个之后的部分; 负的数字会从后向前索引(-1 指最后一个参数)。 否则,index 必须是字符串 "#", 此时 select 返回参数的个数。 6.3模块pack.config一个描述有一些为包管理准备的编译期配置信息的串。 这个字符串由一系列行构成: 第一行是目录分割串。 对于 Windows 默认是 '' ,对于其它系统是 '/' 。
6.4字符串处理string.find (s, pattern [, init [, plain]])可选参数 plain 为 true 时, 关闭模式匹配机制。 此时函数仅做直接的 “查找子串”的操作, 而 pattern 中没有字符被看作魔法字符。 注意,如果给定了 plain ,就必须写上 init 。 如果在模式中定义了捕获,捕获到的若干值也会在两个索引之后返回。 string.gsub (s, pattern, repl [, n])如果 repl 是一个字符串,那么把这个字符串作为替换品。 字符 % 是一个转义符: repl 中的所有形式为 %d 的串表示 第 d 个捕获到的子串,d 可以是 1 到 9 。 串 %0 表示整个匹配。 串 %% 表示单个 %。 如果 repl 是张表,每次匹配时都会用第一个捕获物作为键去查这张表。 如果 repl 是个函数,则在每次匹配发生时都会调用这个函数。 所有捕获到的子串依次作为参数传入。 string.len (s)接收一个字符串,返回其长度。 空串 "" 的长度为 0 。 内嵌零也统计在内,因此 "a\000bc\000" 的长度为 5 string.rep (s, n [, sep])返回 n 个字符串 s 以字符串 sep 为分割符连在一起的字符串。 默认的 sep 值为空字符串(即没有分割符)。 如果 n 不是正数则返回空串。 6.4.1 匹配模式Lua 中的匹配模式直接用常规的字符串来描述。 它用于模式匹配函数 string.find, string.gmatch, string.gsub, string.match。 这一节表述了这些字符串的语法及含义(即它能匹配到什么)。 字符类: 字符类 用于表示一个字符集合。 下列组合可用于字符类:
模式条目: 模式条目 可以是
模式: 模式 指一个模式条目的序列。 在模式最前面加上符号 '^' 将锚定从字符串的开始处做匹配。 在模式最后面加上符号 '$' 将使匹配过程锚定到字符串的结尾。 如果 '^' 和 '$' 出现在其它位置,它们均没有特殊含义,只表示自身。 捕获: 模式可以在内部用小括号括起一个子模式; 这些子模式被称为 捕获物。 当匹配成功时,由 捕获物 匹配到的字符串中的子串被保存起来用于未来的用途。 捕获物以它们左括号的次序来编号。 例如,对于模式 "(a(.)%w(%s))" , 字符串中匹配到 "a(.)%w(%s)" 的部分保存在第一个捕获物中 (因此是编号 1 ); 由 "." 匹配到的字符是 2 号捕获物, 匹配到 "%s*" 的那部分是 3 号。 作为一个特例,空的捕获 () 将捕获到当前字符串的位置(它是一个数字)。 例如,如果将模式 "()aa()" 作用到字符串 "flaaap" 上,将产生两个捕获物: 3 和 5 。 6.5 UTF-8支持utf8.charpattern用于精确匹配到一个 UTF-8 字节序列的模式(是一个字符串,并非函数)"[\0-\x7F\xC2-\xF4][\x80-\xBF]*" (参见 §6.4.1)。 它假定处理的对象是一个合法的 UTF-8 字符串。 6.6 表处理table.move (a1, f, e, t [,a2])将元素从表 a1 移到表 a2。 这个函数做了次等价于后面这个多重赋值的等价操作: a2[t],··· = a1[f],···,a1[e]。 a2 的默认值为 a1。 目标区间可以和源区间重叠。 索引 f 必须是正数。 table.pack (···)返回用所有参数以键 1,2, 等填充的新表, 并将 "n" 这个域设为参数的总数。 注意这张返回的表不一定是一个序列。
table.sort (list [, comp])排序算法并不稳定; 即当两个元素次序相等时,它们在排序后的相对位置可能会改变。 6.7 数学库math.modf (x)返回 x 的整数部分和小数部分。 第二个结果一定是浮点数。 math.type (x)如果 x 是整数,返回 "integer", 如果它是浮点数,返回 "float", 如果 x 不是数字,返回 nil。 6.8 输入输出库I/O 库提供了两套不同风格的文件处理接口。 第一种风格使用隐式的文件句柄; 它提供设置默认输入文件及默认输出文件的操作, 所有的输入输出操作都针对这些默认文件。 第二种风格使用显式的文件句柄。 当使用隐式文件句柄时, 所有的操作都由表 io 提供。 若使用显式文件句柄, io.open 会返回一个文件句柄,且所有的操作都由该文件句柄的方法来提供。 表 io 中也提供了三个 和 C 中含义相同的预定义文件句柄: io.stdin, io.stdout, 以及 io.stderr。 I/O 库永远不会关闭这些文件。 除非另有说明, I/O 函数在出错时都返回 nil (第二个返回值为错误消息,第三个返回值为系统相关的错误码)。 成功时返回与 nil 不同的值。 在非 POSIX 系统上, 根据错误码取出错误消息的过程可能并非线程安全的, 因为这使用了 C 的全局变量 errno 。 io.open (filename [, mode])这个函数用字符串 mode 指定的模式打开一个文件。 返回新的文件句柄。 当出错时,返回 nil 加错误消息。 mode 字符串可以是下列任意值: "r": 读模式(默认); io.popen (prog [, mode])这个函数和系统有关,不是所有的平台都提供。 用一个分离进程开启程序 prog, 返回的文件句柄可用于从这个程序中读取数据 (如果 mode 为 "r",这是默认值) 或是向这个程序写入输入(当 mode 为 "w" 时) 用这个可以执行些脚本命令并返回结果 io.tmpfile ()如果成功,返回一个临时文件的句柄。 这个文件以更新模式打开,在程序结束时会自动删除。 io.type (obj)检查 obj 是否是合法的文件句柄。 如果 obj 它是一个打开的文件句柄,返回字符串 "file"。 如果 obj 是一个关闭的文件句柄,返回字符串 "closed file"。 如果 obj 不是文件句柄,返回 nil 。 file:read (···)读文件 file, 指定的格式决定了要读什么。 对于每种格式,函数返回读出的字符对应的字符串或数字。 若不能以该格式对应读出数据则返回 nil。 (对于最后这种情况, 函数不会读出后续的格式。) 当调用时不传格式,它会使用默认格式读下一行(见下面描述)。 提供的格式有
file:seek ([whence [, offset]])设置及获取基于文件开头处计算出的位置。 设置的位置由 offset 和 whence 字符串 whence 指定的基点决定。基点可以是:
whence 的默认值是 "cur", offset 默认为 0 。 因此,调用 file:seek() 可以返回文件当前位置,并不改变它; 调用 file:seek("set") 将位置设为文件开头(并返回 0); 调用 file:seek("end") 将位置设到文件末尾,并返回文件大小。 file:setvbuf (mode [, size])设置输出文件的缓冲模式。 有三种模式:
操作系统库os.getenv (varname)返回进程环境变量 varname 的值, 如果该变量未定义,返回 nil 。 |
请发表评论