1. 基础库
我们在整个教程中使用了各种主题下的基本库。 下表提供了相关页面的链接,并列出了本Lua教程各部分所涵盖的功能。
编号
|
库/方法
|
作用
|
1
|
错误处理
|
包括错误处理函数,如断言, 错误,如Lua错误处理中所述。
|
2
|
内存管理
|
包括与垃圾收集相关的自动内存管理功能, 如Lua垃圾收集中所述。
|
3
|
dofile ([filename])
|
它打开文件并以块的形式执行文件的内容。
|
4
|
_G
|
因此是保存全局环境的全局变量(即_G._G = _G )。
|
5
|
getfenv ([f])
|
返回函数使用的当前环境。
|
6
|
getmetatable (object)
|
如果object 没有metatable , 则返回nil 。 否则,如果object 的metatable 具有__metatable 字段,
|
7
|
ipairs (t)
|
此函数获取表的索引和值。
|
8
|
load (func [, chunkname])
|
使用函数func 加载一个块来获取它的碎片。
|
9
|
loadfile ([filename]))
|
与load 类似,但是如果没有给出文件名,则从文件filename 或标准输入中获取块。
|
10
|
loadstring (string [, chunkname])
|
与load 函数类似,但从给定的字符串中获取块。
|
11
|
next (table [, index])
|
允许程序遍历表的所有字段。
|
12
|
pairs (t)
|
暂停正在运行的协同程序。
|
13
|
print (...)
|
打印给定的参数值。
|
14
|
rawequal (v1, v2)
|
检查v1 是否等于v2 ,而不调用任何无方法。 返回一个布尔值。
|
15
|
rawget (table, index)
|
获取table [index] 的值, 而不调用任何方法。table 必须是表; index 可以是任何值。
|
16
|
rawset (table, index, value)
|
将table [index] 的值设置为value ,而不调用任何方法。
|
17
|
select (index, ...)
|
如果index 是数字,则返回参数编号索引后的所有参数。
|
18
|
setfenv (f, table)
|
设置给定函数使用的环境。
|
19
|
setmetatable (table, metatable)
|
设置给定表的元表。
|
20
|
tonumber (e [, base])
|
尝试将参数转换为数字。
|
21
|
tostring (e)
|
接收任何类型的参数并将其转换为合理格式的字符串。
|
22
|
type (v)
|
返回唯一参数的类型,编码为字符串。
|
23
|
unpack (list [, i [, j]])
|
返回给定表中的元素。
|
24
|
_VERSION
|
包含当前解释器版本的字符串的全局变量(不是函数)。
|
25
|
协同程序
|
包括Lua协同程序中解释的协程操作功能。
|
2. Lua数学库
编号
|
库或方法
|
描述
|
1
|
math.abs(x)
|
返回x 的绝对值。
|
2
|
math.acos(x)
|
返回x 的弧余弦值(以弧度表示)。
|
3
|
math.asin(x)
|
返回x 的弧正弦(以弧度表示)。
|
4
|
math.atan(x)
|
返回x 的反正切(以弧度表示)。
|
5
|
math.atan2(y,x)
|
返回y / x 的反正切(以弧度表示),但使用两个参数的符号来查找结果的象限(它也正确处理x 为零的情况。)
|
6
|
math.ceil(x)
|
返回大于或等于x 的最小整数。
|
7
|
math.cos(x)
|
返回x 的余弦值(假设为弧度)。
|
8
|
math.cosh(x)
|
返回x 的双曲余弦值。
|
9
|
math.deg(x)
|
以度为单位返回角度x (以弧度表示)。
|
10
|
math.exp(x)
|
返回值e 的x 次幂。
|
11
|
math.floor(x)
|
返回小于或等于x 的最大整数。
|
12
|
math.fmod(x,y)
|
返回x 除以y 的余数,将商舍入为零。
|
13
|
math.frexp(x)
|
返回m 和e ,使得x = m2e ,e 是整数,m 的绝对值在[0.5,1] 范围内(或者当x 为零时为零)。
|
14
|
math.huge
|
HUGE_VAL 值是一个大于或等于任何其他数值的值。
|
15
|
math.ldexp(m, e)
|
返回m2e (e 是一个整数)。
|
16
|
math.log(x)
|
返回x 的自然对数。
|
17
|
math.log10(x)
|
返回x 的以10 为底的对数。
|
18
|
math.max(x,...)
|
返回参数中的最大值。
|
19
|
math.min(x,...)
|
返回参数中的最小值。
|
20
|
math.modf(x)
|
返回两个数字,x 的整数部分和x 的小数部分。
|
21
|
math.pi
|
pi 的值。
|
22
|
math.pow(x,y)
|
返回x 的y 方。(也可以使用表达式x ^ y 来计算此值。)
|
23
|
math.rad(x)
|
以弧度为单位返回角度x (以度为单位)。
|
24
|
math.random([m [, n]])
|
此函数是ANSI C提供的简单伪随机生成器函数rand的接口。
|
25
|
math.randomseed(x)
|
将x 设置为伪随机生成器的“种子”:相等的种子产生相等的数字序列。
|
26
|
math.sin(x)
|
返回x 的正弦值(假设为弧度)。
|
27
|
math.sinh(x)
|
返回x 的双曲正弦值。
|
28
|
math.sqrt(x)
|
返回x 的平方根。(也可以使用表达式x ^ 0.5 来计算此值。)
|
29
|
math.tan(x)
|
返回x 的正切(假设为弧度)。
|
30
|
math.tanh(x)
|
返回x 的双曲正切值。
|
三角函数
使用三角函数的简单示例如下所示-
radianVal = math .rad(math .pi / 2)
io .write(radianVal ,"\n")
-- Sin value of 90(math.pi / 2) degrees
io .write(string .format("%.1f ", math .sin(radianVal )),"\n")
-- Cos value of 90(math.pi / 2) degrees
io .write(string .format("%.1f ", math .cos(radianVal )),"\n")
-- Tan value of 90(math.pi / 2) degrees
io .write(string .format("%.1f ", math .tan(radianVal )),"\n")
-- Cosh value of 90(math.pi / 2) degrees
io .write(string .format("%.1f ", math .cosh(radianVal )),"\n")
-- Pi Value in degrees
io .write(math .deg(math .pi ),"\n")
当运行上面的程序时,将得到以下输出 -
0.0274155677808040.0 1.0 0.0 1.0 180
其他常见的数学函数
使用常见数学函数的简单示例如下所示-
-- Floor
io .write("Floor of 10.5055 is ", math .floor(10.5055),"\n")
-- Ceil
io .write("Ceil of 10.5055 is ", math .ceil(10.5055),"\n")
-- Square root
io .write("Square root of 16 is ",math .sqrt(16),"\n")
-- Power
io .write("10 power 2 is ",math .pow(10,2),"\n")
io .write("100 power 0.5 is ",math .pow(100,0.5),"\n")
-- Absolute
io .write("Absolute value of -10 is ",math .abs(-10),"\n")
--Random
math .randomseed(os .time())
io .write("Random number between 1 and 100 is ",math .random(),"\n")
--Random between 1 to 100
io .write("Random number between 1 and 100 is ",math .random(1,100),"\n")
--Max
io .write("Maximum in the input array is ",math .max(1,100,101,99,999),"\n")
--Min
io .write("Minimum in the input array is ",math .min(1,100,101,99,999),"\n")
当运行上面的程序时,将得到以下输出 -
Floor of 10.5055 is 10
Ceil of 10.5055 is 11
Square root of 16 is 4
10 power 2 is 100
100 power 0.5 is 10
Absolute value of -10 is 10
Random number between 1 and 100 is 0.22876674703207
Random number between 1 and 100 is 7
Maximum in the input array is 999
Minimum in the input array is 1
3. Lua操作系统工具
编号
|
库或方法
|
描述
|
1
|
os.clock()
|
返回程序使用的CPU时间(以秒为单位)的近似值。
|
2
|
os.date([format[, time]])
|
返回包含日期和时间的字符串或表,根据给定的字符串格式进行格式化。
|
3
|
os.difftime(t2,t1)
|
返回从时间t1 到时间t2 的秒数。在POSIX,Windows和其他一些系统中,恰好是t2-t1 的值。
|
4
|
os.execute([command])
|
此功能相当于ANSI C功能系统。 它传递要由操作系统shell执行的命令。 如果命令成功终止,则第一个结果为true ,否则为nil 。
|
5
|
os.exit([code[, close])
|
调用ANSI C函数出口以终止宿主程序。 如果code 为true ,则返回状态为EXIT_SUCCESS ; 如果code 为false ,则返回状态为EXIT_FAILURE ; 如果code 是数字,则返回的状态是此数字。
|
6
|
os.getenv(varname)
|
返回进程环境变量varname 的值,如果未定义变量,则返回nil 。
|
7
|
os.remove(filename)
|
使用给定名称删除文件(或POSIX系统上的空目录)。 如果此函数失败,则返回nil ,以及描述错误和错误代码的字符串。
|
8
|
os.rename(oldname, newname)
|
将名为oldname 的文件或目录重命名为newname 。 如果此函数失败,则返回nil ,以及描述错误和错误代码的字符串。
|
9
|
os.setlocale(locale [,category])
|
设置程序的当前区域设置。 locale 是一个依赖于系统的字符串,用于指定语言环境; category 是一个可选字符串,用于描述要更改的类别:all ,collate ,ctype ,currency ,numeric 或time ; 默认类别(category )是"all" 。该函数返回新语言环境的名称,如果无法满足请求,则返回nil 。
|
10
|
os.time([table])
|
返回不带参数调用的当前时间,或表示给定表指定的日期和时间的时间。 此表必须包含字段年,月和日,并且可能包含字段小时(默认值为12 ),分钟(默认值为0 ),秒(默认值为0 )和isdst (默认值为nil )。 有关这些字段的说明,请参见os.date 函数。
|
11
|
os.tmpname()
|
返回一个文件名,该文件名可用于临时文件。 文件必须在使用前显式打开,并在不再需要时显式删除。
|
常见的OS功能
使用常见数学函数的简单示例如下所示 -
-- Date with format
io .write("The date is ", os .date("%m/%d/%Y"),"\n")
-- Date and time
io .write("The date and time is ", os .date(),"\n")
-- Time
io .write("The OS time is ", os .time(),"\n")
-- Wait for some timefor i =1,1000000 doend
-- Time since Lua started
io .write("Lua started before ", os .clock(),"\n")
当运行上面的程序时,将得到类似的输出如下 -
The date is 01/25/2018
The date and time is 01/25/18 07:38:40
The OS time is 1490615720
Lua started before 0.013
上面的例子只是一些常见的例子,可根据自己的需要使用OS库,建议尝试使用所有的功能以便更加熟悉。像remove 这样的函数有助于删除文件,执行有助于于执行OS命令。
--------------------------------------------------
转载于:https://www.yiibai.com/lua/lua_operating_system_facilities.html
|
请发表评论