码迷,mamicode.com
首页 > 其他好文 > 详细

Lua 常用库函数

时间:2014-05-09 20:58:11      阅读:669      评论:0      收藏:0      [点我收藏+]

标签:lua初学简单笔记

一、数学库
1. 随机数
math.randomseed(os.time());   -- 设置随机种子   

for i=1, 100 do
    print(math.random(-1000,1000));   -- 随机区间 [-1000,1000], math.random(1000) 表示 [1,1000]
end;

2. 最大,最小值
math.max   math.min


二、table 库
1. 插入和删除
a = {10,20,30};
print(unpack(a));
table.insert(a,2,5);
print(unpack(a));
table.insert(a,100);   -- 没有填写插入的位置,默认放置到尾部
print(unpack(a));

table.remove(a,1);
print(unpack(a));
table.remove(a); -- 没有填写删除的位置,默认删除最后一个元素
print(unpack(a));

2. 排序,后面的参数是一个匿名函数,表示排序规则
table.sort(a, function(a,b) return (a>b) end);   
print(unpack(a));
table.sort(a, function(a,b) return (a<b) end);   
print(unpack(a));
newLine();

3. 连接, exp2表示连接分隔符,exp3,exp4表示连接的起止下标
print (table.concat(a,"!",1, #a));  


三、I/O 库
1. io.write(a,b,c);   io.write 不会像print自动调用制表符或是回车

2. io.read的参数
"*all" 读取整个文件
"*line" 读取下一行    默认格式
"*number" 读取一个数字
<num> 读取一个不超过<num>个字符的字符串

line = io.read(10);     -- 仅获取前10个字符
print(line);

print(io.read("*number"));   

3. 完整I/O模型
local path = [[E:\Stadio\Lua\LuaCode\file.txt]];    -- 不转义
local f = assert( io.open(path,"a") );   -- 可以是 "r" 读取, "w" 写入, "a" 追加, "rb" "wb" 读取二进制文件
local t = f:read("*all");       -- 读取整个文件
-- local text, rest = f:read(BUFSIZE,"*line");    -- 分块读取,rest表示被切开后剩余的部分
print(t);
--f:write("\nfor test");      -- 写入文件
print(f:seek()); -- 获取文件指针当前位置
print(f:seek("end") .. " byte");    -- 获取文件大小,单位是字节
f:close();


四、操作系统库
1. 日期
print(os.time());   --返回秒数
print(os.date());

系统时间的格式字符
%a 星期简写
%A 星期全称
%b 月份简写
%B 月份全称
%c 日期和时间  默认
%d 一个月中的天数
%H 24小时制的小时
%I 12小时制的小时
%j 一年中的天数
%M 分钟数
%m 月份数
%p 上午或是下午
%S 秒数
%w 一星期中的第几天
%x 日期 d/m/y
%X 时间 h/m/s
%y 年份 98
%Y 年份 1998

print(os.date("%A")); 
print(os.date("%d")); 
print(os.date("%w")); 
print(os.date("%x")); 

2. os.clock() 会返回当前CPU时间的描述,可用于计算一段代码的执行时间
local x = os.clock();
local s = 0;
for i=1, 10000000 do
    s = i*100;
end;
print(x, os.clock(),"run: " .. os.clock()-x);

3. os.execute() 可运行一条系统命令
os.execute("ping www.qq.com -t");

4. os.exit() 终止程序运行,
5. print(os.getenv("path"));   -- 获取环境变量的值


五、 调试库
1. 钩子函数。
钩子函数会在程序运行中某个特定事件发生时被调用,相当于触发器
4种事件会触发钩子: 
调用函数               call 事件
返回时                 return 事件
运行一行新代码         line 事件
运行指定函数代码       coutn事件
简写: "c" "r" "l" 

2. 注册钩子函数:
debug.sethook(钩子函数,事件简写, <num>)  第三个参数主要是针对count, 在第三个参数指定行数
关闭钩子函数  debug.sethook();

3. 示例:
-- 定义钩子函数
function trace(evint, line)
    print(evint, line);     -- 打印事件和代码所在行号
end;

debug.sethook(trace, "l");

print("tracing");
i = 10;
debug.sethook();    -- 关闭钩子函数
a = 100;

调试库还有一些强大的应用,如 debug.getinfo, 性能剖析等,这部分先跳过,等需要的时候,再回头学习。


Lua 常用库函数,布布扣,bubuko.com

Lua 常用库函数

标签:lua初学简单笔记

原文地址:http://blog.csdn.net/core__code/article/details/25421197

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!