Lua学习笔记之各种库

math库

三角函数:sin , cos , tan , asin , acos等
指数对数:exp , log , log10
取整函数:floor , ceil
max , min
随机数:random , randomseed

math.random(6)     -- [1,6]之间的伪随机数
math.random(2,9)    --[2,9]之间的伪随机数
math.randomseed( number ) 用number设置种子,以此初始化伪随机数生成器,程序会生成的相同的伪随机数序列。

table库

table库中的函数,*会将table作为数组来操作

table.insert( t , 1 , 100 )  --在t中的第一个位置插入元素100
table.insert( t, 200 )  --在t中末尾添加元素200
table.remove( t , 1 )  --删除第一个位置的元素
table.remove( t )  --删除末尾元素

这些操作的运用,就可以实现 栈 ,队列 ,双向队列

table.sort( t ) 对数组排序
table.concat( t ) 将 字符串数组 

连接起来,可以用来实现字符串缓冲,在数据结构一章中有所阐述。

OS库

它不包含目录操作和套接字操作的系统函数。但是独立lua库提供:posix库提供POSIX.1标准功能,

luasocket库提供网络支持。
os.rename函数  文件改名
os.remove函数  删除文件

os.time() 返回当前时间戳
os.time{ year=1970 , month=1 , day=1 , hour=0 } 指定时间秒数
os.date( fmt , ... ) 返回当前时间,指定格式串

os.exit( )  终止当前程序的执行
os.getenv( ‘someenv’ ) 获取某环境变量的值
os.execute( ) 可运行一条系统命令
os.setlocale() 设置当前lua程序所使用的区域

I/O库

简单io库:有2个当前文件(输入,输出), 被进程初始化为标准输入文件stdin,和标准输出文件stdout。

io.input(filename)  ;  io.output(filename) 修改 2个当前文件,之后,再调用io.input() ;           io.output()修改,否则将一直沿用当前文件。
io.write(a,b,c) 不一定使用标准输出,不会添加 ’\t’,’\n’额外字符。
print() 总是使用标准输出,并且会添加制表符或回车。
io.read()
io.read( “*all” )  : “*all” ; “*line” ; “*number” ; <num>(<64>)
io.read(0) 用于检查是否到了 文件结尾,如果有数据可读返回空字符串;否则返回nil。

完整io库
基于文件句柄

io.open( “filename” , ‘r’ )  --  r ; w ; a ; b
io.open函数返回nil,和一条错误信息 及 错误代码
--> nil		non-existent-file: No such file or directory	2
-->nil 		xxxxxfilename: Permission denied  13


local  f  =  assert( io.open( filename , mode ) )
f:close()

io.stdin , io.stdout , io.stderr  io库预定义句柄
io.stderr:write(message)

io.input() 可以得到当前文件
local temp = io.input()  -- 保存当前文件
io.input( “newinput” )  -- 打开一个新的当前文件
< 对新的输入文件做一些操作>
io.input():close()		-- 关闭当前文件
io.input( temp) 

性能小诀窍:

按块儿读取 :

local lines, rest  = f:read( BUFSIZE , “*line” )

rest 包含了被块儿断开的一行剩余的部分。
分块儿,不断行

其他函数:

io.function()   刷新当前文件 或者 f:function() 刷新f
tmpfile() 返回一个临时文件句柄,读写方式打开,进程结束删除。
flush() 刷新缓冲写入文件。
f:seek( whence , offset )
whence --> “set”:起始位置;”cur”:当前位置(默认);”end”:末尾位置
offset-->偏移字节数  默认0

以上所有文件库函数:错误返回nil 和 一条错误信息

posted @ 2014-08-10 00:47  Appleegig  阅读(268)  评论(0编辑  收藏  举报