Lua2.4 参考手册(四)

(接上篇)
--------------------------------------
6 预定义的函数和库
--------------------------------------
Lua 的一组预定义函数虽少但功能强大。他们中大多数提供的功能让语言有一定程度的自反性。一些功能不能通过语言的其它部分模拟也不能通过标准的 Lua API 模拟。其它的只是一些有用的有用通用 API 函数接口。

库,在另一方面,提供了一种通过标准 API 实现的有用的程序。因此,它们并非语言必需的部分,并且作为单独的 C 模块被提供。
目前,有三个库:
字符串处理
数学函数(sin, cos, 等)
输入输出(和一些系统功能)

为了能使用这些库,宿主程序应该调用函数 strlib_open, mathlib_open, 和 iolib_open,这几个都在 lualib.h 中声明。

-------------------
6.1 预定义函数
-------------------
dofile (filename)
函数接受一个文件名字,打开并执行它的内容做为一个 Lua 模块,或者做为预编译的模块。当无参调用它时,它执行标准输入的内容。它返回 1 如果没有出错,否则返回nil 。如果以非字符串参数调用它时会产生一个错误。

dostring (string)
函数执行一个给定的字符串做为一个 Lua 模块,没有错误返回 1, 否则返回 nil。

next (table, index)
函数允许一个程序枚举一个表的所有字段。它的第一个参数是一个表,第二个参数是表中的索引。它返回表的下一个键值对(索引及和索引关联的值)。当用 nil 做为第二个参数调用它时,函数返回表的第一个健值对。当用最后一个索引调用,或者用 nil 调用一个空表,均返回 nil。

Lua 中没有字段的声明;在语义上,表中一个字段不存在和字段的值为 nil 没有区别。所以,该函数只考虑没有空值的字段。索引的枚举顺序没有规定,就算是数字索引的也没有规定。

8.2 节有一个使用这个函数的例子。

nextvar (name)
函数和 next 函数类似,但它在全局变量上遍历。它的参数是全局变量的名字,或者是 nil (可以获得第一个名字)。和 next 类似,它返回另一个变量的名字和值。或者是 nil 如果没有更多的变量了(遍历结束了)。
8.2 节 有一个使用这个函数的例子。

tostring (e)
函数可以接受一个任何类型的值作为参数,并以一个合理的格式把它转化为字符串。

print (e1, e2, ...)
函数可以接受任意数量的参数,以一种合理的格式打印它们的值。每一个值都在一个新行上打印。这个函数不是为了格式化输出,只是为了以一种快速的方法显示一个值,例如打印一个出错信息或者调试。参见 6.4 节一个格式化输出函数。

tonumber (e)
函数接受一个参数,尝试把它转化为一个数字。如果参数已经是一个数字或者是一个可以转化为数字的字符串(参见 4.2 节),它返回那个数字;否则,返回 nil。

type (v)
函数允许 Lua 测试一个值的类型。它接受一个参数,返回它的类型,以一个字符串表示。这个函数可能的返回值是:
“nil” (一个字符串,不是 nil 值),“number”, “string”,“table”, “function"(C 函数和 Lua 函数都返回它) 和 "userdata"。
和这个字符串一起,函数还返回第二个结果,就是值的标签(tag)。这个标签可以用来区分不同标签的用户数据(user data),或者是 C 函数和 Lua 函数。

assert(v)
当它的参数为 nil 时,产生一个错误断言("assertion failed!")。

error(message)
这个函数产生一个出错信息并且终止库中最后调用的函数(lua_dofile, lua_dostring)。它从不返回。

setglobal(name, value)
这个函数把给定的值赋给一个全局变量。字符串名字并不需要是一个合乎语法的变量名。所以,这个函数可以设置全局变量用奇怪的名字如 m v 1 或者 34. 它返回第二个参数的值。

getglobal(name)
这个函数返回全局变量的值。字符串名字不必是一个合乎语法的变量名。

setfallback (fallbackname, newfallback)
函数用给定的回退函数设置一个新的回退函数。它返回老的回退函数。

-------------------
6.2 字符串处理
-------------------
这个库提供字符串处理的通用函数,如查找和提取子串。索引一个字符串的时候,第一个字符的索引是 1。8.3 节有一些字符串处理的例子。

strfind (str, substr, [init, [end]])
接受两个字符串参数,返回一个数字。这个数字标明第二个参数在第一个参数中第一次出现的位置。如果第二个参数不是第一个参数的子串,返回 nil。第三个可选的数值参数指定检索开始位置。另一个可选的参数设置检索结束位置。

strlen (s)
接受一个字符串返回它的长度。

strsub (s, i, [j])
返回另一个字符串,它是 s 的子串,始于 i 终于 j 。 如果 j 不指定,它被假定为 s 的长度。特别的,strsub(s,1,j) 调用返回 s 的 j 个字符的前缀,strsub(s,i) 返回 s 的始于 i 的后缀。

strlower (s)
接受一个字符串,返回它的所有大写字母都转化为小写的拷贝。其它的字符保持不变。

strupper (s)
接受一个字符串,返回它的所有小写字母都转化为大写的拷贝。其它的字符保持不变。

ascii (s, [i])
返回字符 s[i] 的 ascii 码,如果 i 不指定,就假定它是1。

format(formatstring, e1, e2, ...)
函数返回一个可变参数的格式化字符串,格式由第一个参数描述(它必须是一个字符串)。格式字符串和标准 C 函数的 printf 族的规则一样。唯一不同的是选项 *,l,L,n,p, 和 h 不支持,并且它还有一个额外的选择 q 。这个选项以一个合适的格式格式化一个字符串,可以被 Lua 解释器安全的读回。写在双引号中的字符串,和所有的双引号,换行和反斜线都可以在写出时被正确的转义。
选项 c,d,E,e,f,g,i,o,u,X 和 x 都需要一个数值参数,q 和 s 需要一个字符串。

-------------------
6.3 数学函数
-------------------
这个库是到一些标准 C 数学函数库函数的一个接口。而且,它为二元幂操作符 ^ 注册了一个回退函数,当它应用于 x^y时,返回 x的 y次幂。
它提供了以下的函数:
abs acos asin atan atan2 ceil cos floor log log10
max min mod sin sqrt tan random randomseed
它们中的绝大部分只是 C 函数库中同名函数的接口,不同之处是,在三角函数中,所有的角度被转化为弧度。

max 返回数字参数列表中的最大值,类似的,min 返回最小值。它们的参数个数都是任意的。

mode 和 C 语言中的 % 操作符是等价的。

函数 random 和 randomseed 是到 ANSI C 提供的随机数生成器函数 rand 和 srand 的接口。函数 random 返回在 [0,1) 区间的伪随机数。

-------------------
6.4 I/O
-------------------
Lua 中所有的 I/O 操作都是基于两个当前文件,一个是为了读,一个是为了写。当前的输入输出文件的初始值分别是 stdin, stdout。
除非特别规定,所有的 I/O 函数功能时返回 1 失败时返回 nil。

readfrom (filename)
函数打开一个名为 filename 的文件并且把它设置为当前的输入文件。当无参调用它时,这个函数关闭当前的输入文件,并把当前的输入文件恢复为 stdin。
系统依赖:如果文件名由竖线 | 开始,会用函数 popen 打开一个输入管道。

writeto (filename)
函数打开一个名为 filename 的文件并且把它设置为当前的输出文件。注意,如果这个文件是已经存在,调用这个操作会清除它。当无参调用它时,这个函数关闭当前的输出文件,并把当前的输出文件恢复为 stdout。
系统依赖:如果文件名由竖线 | 开始,会用函数 popen 打开一个输出管道。

appendto (filename)
函数打开一个名为 filename 的文件并且把它设置为当前的输出文件。不像 writeto 操作,这个函数不会清除文件之前的内容。

remove (filename)
函数删除给定名字的文件。

rename(name1, name2)
函数把文件名从 name1 改为 name2。

tmpname()
函数返回一个安全可用的临时文件名。

read ([format])
函数返回从当前输入读取的值。一个可选的字符串参数指定输入的解释方式。

如果没有格式化参数,read 首先跳过空白,制表符,换行符。然后它检查当前的字符是否是单引号或双引号(”,’)。如果是,它读取一个字符串直到字符串结束标志,并且返回这个字符串,不带字符串的标志符。否则,它读取直到另一个空白,制表符,或换行符。

格式化字符串可以是以下的形式:
?[n]
? 可以是:
‘s‘ 或者 ‘S‘ 读一个字符串;
‘f‘ 或者 ‘F‘ 读一个实数;
‘i‘ 或者 ‘I‘ 读一个整数。
可选的 n 是一个数字指示为了构成输入而必须读取多少个字符。特别地,格式 "s1" 读取单个字符。

readuntil (char)
从当前输入读取直到给定字符首次出现。当无参调用时,读取当前输入直到结束。返回读取的字符串。字符本身并不读取。

write (value, [format])
函数写第一个参数的值到当前输出。可选的第二个参数指示使用的格式。这个格式作为一个字符串给出,由四部分组成。第一个部分是必不少的,它必须是下面的几个字符之一:
‘s‘ 或者 ‘S‘ 写字符串;
‘f‘ 或者 ‘F‘ 写浮点数;
‘i‘ 或者 ‘I‘ 写整数。
‘q‘ 或者 ‘Q‘ 写引用的字符串。这个格式以一种 Lua 解释器可以安全读回的格式写字符串。双引号中的字符串会被写,及所有字符串中的双引号,换行和反斜线在写的时候都会被正确的转义。
这些字符可以后接:
[?][m][.n]

? 指示字段的对齐方式
‘<‘ 右对齐(默认)
‘>‘ 左对齐
‘|‘ 居中对齐

m 指示字符的大小

.n 对于实数,指示小数点的位数。对于整数,它是最小位数。对于字符串此位无意义。

当这个函数调用没有给出格式字符串时,这个函数写数字使用 %g 格式,写字符串使用 %s 。可以用函数 format (参见 6.2 节)以取得更好的格式化。

date ([format])
这个函数返回一个包含日期和时间的字符串,以给定的字符格式 format, 同 ANSI C 的函数 strftime 有相同的规则。当无参调用时,它会返回一个合理的日期和时间展示。
这个函数取代 Lua 之前版本中的 date 和 time 函数。

exit([code])
函数调用 C 函数 exit, 以一个可选的退出码,用来终止程序。
(未完待续)

时间: 2024-10-07 15:33:39

Lua2.4 参考手册(四)的相关文章

Lua2.4 参考手册(一)

说明:这个文档是 Lua2.4 的 doc 目录里的 refman.ps 文件.原文版权归原作者所有,这篇翻译只是作为学习之用.如果翻译有不当之处,请参考原文.-------------------以下是正文-------------------编程语言 Lua2.4 的参考手册 摘要:Lua 是一个扩展程序语言,被设计用做其它程序的配置语言.本文档描述 Lua 编程语言 2.4 版,以及 Lua 程序和宿主 C 程序交互的 API.它还提供了一些使用这些主要特点的例子. -----------

Ogre参考手册(四)3.1.4-3.1.14 声明顶点、几何、片段程序(Ogre着色器脚本)

3.1.4 声明顶点.几何.片段程序 使用着色程序前需要先对其定义,一个程序定义可以用于多个材质,这仅需要在所使用的材质定义之前定义该程序. 程序定义可以内嵌在.material脚本中(需要放在所有引用的材质之前),或者希望可以在多个.material中使用,可以在外部.program脚本中定义.在.material和.program中的定义完全相同,区别仅在于.program文件会在所有.material之前解析,因此可以确保程序定义会先于任何使用它的材质定义. 程序可以是底层的(依据具体规范

Lua2.4 参考手册(六)

(接上篇)--------------------------------------8 一些例子--------------------------------------本段给出一些显示 Lua 特性的例子.它并不打算覆盖完整的语言,只是显示一有趣的使用. -------------------8.1 数据结构-------------------表是统一的数据结构.它可以实现多种数据类型,像通常的数组,记录,集合,包,和列表.数组不用解释.在 Lua 中,索引通常从 1 开始,但这只是个惯

Lua2.4 参考手册(五)

(接上篇)--------------------------------------7 调试接口--------------------------------------Lua 没有内置的调试功能.而是借助于函数和钩子(hook)提供了一个特殊接口,可以用来构建不同种类的调试器,分析器(profile)和一些其它的需要解释器内部信息的工具.这个接口在 luadebug.h 文件中声明.-------------------7.1 栈和函数信息-------------------获得解释器栈

Lua2.4 参考手册(三)

(接上篇)--------------------------------------5 API--------------------------------------这节主要描述 Lua 的 API, 也就是宿主程序和库交互的一组 C 函数.API 函数可以分为以下几类:1. 执行 Lua 代码:2. 在 Lua 和 C 之间进行值的转化:3. 操作(读写)Lua 对象:4. 调用 Lua 函数:5. 由 Lua 调用的 C 函数:6. Lua 对象的引用. 所有的 API 都在文件 lu

Lua2.4 参考手册(二)

(接上篇)--------------------------------------4 语言--------------------------------------这节介绍 Lua 的词法,语法和语义. -------------------4.1 词法约定-------------------Lua 是区别大小写的语言.标识符可以是任何字母,数字,下划线组成的字符串,且首字母不可为数字.下面这些是保留的关键字,不可用做标识符:and     do     else     elseif 

《python参考手册(第四版)》【PDF】下载

<python参考手册(第四版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382222 内容介绍 本书是权威的Python语言参考指南,内容涉及核心Python语言和Python库的最重要部分.本书内容简洁扼要.可读性强,书中还包括了一些没有在Python官方文档或其他资料中出现过的一些高级的主题. 这一版在内容上进行了全面更新,介绍了Python 2.6和Python 3新引入的编程语言特性和库模块,同时还分析了Python程序

EL表达式参考手册

一.EL简介 1.语法结构     ${expression}2.[]与.运算符     EL 提供.和[]两种运算符来存取数据.    当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 [].例如:        ${user.My-Name}应当改为${user["My-Name"] }    如果要动态取值时,就可以用[]来做,而.无法做到动态取值.例如:        ${sessionScope.user[data]}中data 是一个变量3

css3参考手册

最近在学习CSS3,刚从网上找到CSS3参考手册与大家分享: CSS 参考手册 CSS 参考手册 CSS 选择器 W3School 的 CSS 参考手册定期通过所有主流浏览器进行测试. CSS 属性 CSS 属性组: 动画 背景 边框和轮廓 盒(框) 颜色 内容分页媒体 定位 可伸缩框 字体 生成内容 网格 超链接 行框 列表 外边距 Marquee 多列 内边距 分页媒体 定位 打印 Ruby 语音 表格 文本 2D/3D 转换 过渡 用户界面 "CSS" 列指示该属性是在哪个 CS