随笔分类 - Lua

摘要: 捕获捕获是这样一种机制:可以使用模式串的一部分匹配目标串的一部分。将你想捕获的模式用圆括号括起来,就指定了一个捕获。在string.find使用捕获的时候,函数会返回捕获的值作为额外的结果。这常被用来将一个目标串拆分成多个:pair = "name = Anna"_, _, key, value = string.find(pair, "(%a+)%s*=%s*(%a+)")print(key, ...阅读全文
posted @ 2009-09-02 17:36 忧郁的加菲猫 阅读(7985) | 评论 (1) 编辑
摘要: 模式匹配函数在string库中功能最强大的函数是:string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmatch(返回查找到字符串的迭代器)这些函数都是基于模式匹配的。与其他脚本语言不同的是,Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配。主要的原因出于程序大小方面的考虑:实现一个...阅读全文
posted @ 2009-09-02 14:28 忧郁的加菲猫 阅读(47006) | 评论 (2) 编辑
摘要: Lua中每个值都可具有元表。 元表是普通的Lua表,定义了原始值在某些特定操作下的行为。你可通过在值的原表中设置特定的字段来改变作用于该值的操作的某些行为特征。例如,当数字值作为加法的操作数时,Lua检查其元表中的"__add"字段是否有个函数。如果有,Lua调用它执行加法。 我们称元表中的键为事件(event),称值为元方法(metamethod)。前述例子中的事件是"add",元方法是执行加法...阅读全文
posted @ 2009-09-01 16:13 忧郁的加菲猫 阅读(18764) | 评论 (1) 编辑
摘要: 基本函数库为Lua内置的函数库,不需要额外装载assert (v [, message])功能:相当于C的断言,参数:v:当表达式v为nil或false将触发错误,message:发生错误时返回的信息,默认为"assertion failed!"-----------------------------------------------------------------------------...阅读全文
posted @ 2009-08-12 21:05 忧郁的加菲猫 阅读(49683) | 评论 (2) 编辑
摘要: 把Lua4.0里面的函数总结出来,目的是为了和5.1中的函数进行区分,由于工作中经常使用到4.0中的函数,所以列出来也便于查询和学习标准库_ALERT_ERRORMESSAGEcallcollectgarbage功能:是垃圾收集器的通用接口,用于操作垃圾收集器copytagmethodsdofile (filename)功能:打开并且执行一个lua块,当忽略参数filename时,将执行标准输入设...阅读全文
posted @ 2009-08-12 16:26 忧郁的加菲猫 阅读(4808) | 评论 (1) 编辑
摘要: 这个库通过表os实现os.clock ()功能:返回一个程序使用CPU时间的一个近似值例如:local x = os.clock();print(os.clock())local s = 0;for i = 1, 100000000 do s = s + i;endprint(string.format("elapsed time : %.2f\n", os.clock() - x));输出:0e...阅读全文
posted @ 2009-08-10 22:16 忧郁的加菲猫 阅读(13245) | 评论 (0) 编辑
摘要: 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.table.concat(table, sep, start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外...阅读全文
posted @ 2009-08-10 20:43 忧郁的加菲猫 阅读(235821) | 评论 (8) 编辑
摘要: Lua5.1中数学库的所有函数如下表:math.pi 为圆周率常量 = 3.14159265358979323846abs取绝对值math.abs(-15)15acos反余弦函数math.acos(0.5)1.04719755asin反正弦函数math.asin(0.5)0.52359877atan2x/y的反正切值math.atan2(90.0,45.0)1.10714871atan反正切函数m...阅读全文
posted @ 2009-08-10 19:19 忧郁的加菲猫 阅读(25260) | 评论 (0) 编辑
摘要: lua_State*luaL_newstate()Lua脚本的编译执行是相互独立的,在不同的线程上执行。通过luaL_newstate()函数可以申请一个虚拟机,返回指针类型 lua_State。今后其他所有Lua Api函数的调用都需要此指针作为第一参数,用来指定某个虚拟机。lua_State* L = luaL_newstate();------------------------------...阅读全文
posted @ 2009-08-08 23:51 忧郁的加菲猫 阅读(11207) | 评论 (1) 编辑
摘要: 1.简介这一节介绍一些关于栈操作、数据类型判断的LUA API,可以使用这些函数获得脚本中的变量值。2.步骤编写 test01.lua 脚本,在VS2003中创建控制台C++程序并正确配置,执行查看结果,修改test02.lua脚本后查看执行结果 3.测试脚本以下是用来测试的lua脚本function plustwo(x)local a = 2;return x+a;end;rows = 6;co...阅读全文
posted @ 2009-08-08 21:34 忧郁的加菲猫 阅读(1982) | 评论 (0) 编辑
摘要: 一、文件读存:-- 似乎不支持大文件(不能超过9k?)function FileSaveLoad()local file = io.open("c:\\in.lua", "r");assert(file);local data = file:read("*a"); --读取所有内容file:close();file = io.open("c:\\out.lua", "w");assert(file...阅读全文
posted @ 2009-08-07 11:09 忧郁的加菲猫 阅读(8651) | 评论 (0) 编辑
摘要: Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容。在Lua中操纵字符串的功能基本来自于string库。字符串库中的一些函数是非常简单的:string.len(s) 返回字符串s的长度;string.rep(s, n)返回重复n次字符串s的串;你使用string.rep("a", 2^20)可以创建一个1M bytes的字符串(...阅读全文
posted @ 2009-08-07 09:20 忧郁的加菲猫 阅读(115759) | 评论 (3) 编辑