08 2011 档案

摘要:Lua中的模块(module)机制有点类似于C语言的动态库,可以将一些公共的代码放在模块中,以API的形式提供给Lua应用脚本使用。使用模块或许还可以做成像Android的Application Frameworks,建立一种新的应用程序编程模型,只是猜想。模块最简单的使用方式:view plainrequire“os”os.clock() tableLua语言共有8中数据类型,其中table(表)类型实现了“关联数组(associative array)”。table中可以保存各种数据类型。和table关联的metatable,它定义了表的操作的一些行为,比如:使用+操作时,会去查找meta 阅读全文
posted @ 2011-08-15 11:32 麦飞 阅读(5574) 评论(0) 推荐(0)
摘要:--13.4.1The__indexMetamethod有点c++继承的意思--createanamespaceWindow={}--createtheprototypewithdefaultvaluesWindow.prototype={x=0,y=0,width=100,height=101,}--定义一个原型表默认值--createametatableWindow.mt={}--创建metatable--declaretheconstructorfunctionfunctionWindow.new(o)--定义new函数setmetatable(o,Window.mt)returnoen 阅读全文
posted @ 2011-08-15 10:47 麦飞 阅读(480) 评论(0) 推荐(0)
摘要://average.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include<stdio.h>extern"C"{#include"lua.h"#include"lualib.h"#include"lauxlib.h"}/*指向Lua解释器的指针*/lua_State*L;staticintaverage(lua_State*L){/*得到参数个数*/intn=lua_gettop(L) 阅读全文
posted @ 2011-08-12 17:12 麦飞 阅读(4300) 评论(0) 推荐(1)
摘要://luatest1.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include<stdio.h>extern"C"{#include"lua.h"#include"lualib.h"#include"lauxlib.h"}/*Lua解释器指针*/lua_State*L;intmain(intargc,char*argv[]){/*初始化Lua*/L=lua_open();/*载入Lua基 阅读全文
posted @ 2011-08-12 11:29 麦飞 阅读(568) 评论(0) 推荐(0)
摘要:用debug模式编译时通过,而用release方式时接口函数无法识别test.obj : error LNK2001: unresolved external symbol _lua_closetest.obj : error LNK2001: unresolved external symbol _luaopen_basetest.obj : error LNK2001: unresolved external symbol _lua_open打开vstools->options->projects->vc++ directories (工具->选项->目录)e 阅读全文
posted @ 2011-08-12 11:17 麦飞 阅读(929) 评论(1) 推荐(0)
摘要:lines={luaH_set=10,luaH_get=24,luaH_present=48,}functionpairsByKeys(t,f)locala={}forninpairs(t)dotable.insert(a,n)endtable.sort(a,f)locali=0--iteratorvariablelocaliter=function()--iteratorfunctioni=i+1ifa[i]==nilthenreturnnilelsereturna[i],t[a[i]]endendreturniterendf=function(a,b)ifa>bthenreturnt 阅读全文
posted @ 2011-08-11 14:47 麦飞 阅读(2602) 评论(0) 推荐(0)
摘要:范性for的执行过程: 首先,初始化,计算in后面表达式的值,表达式应该返回范性for需要的三个值:迭代函数、状态常量、控制变量;与多值赋值一样,如果表达式返回 的结果个数不足三个会自动用nil补足,多出部分会被忽略。 第二,将状态常量和控制变量作为参数调用迭代函数(注意:对于for结构来说,状态常量没有用处,仅仅在初始化时获取他的值并传递给迭代函数)。 第三,将迭代函数返回的值赋给变量列表。 第四,如果返回的第一个值为nil循环结束,否则执行循环体。 第五,回到第二步再次调用迭代函数。 更具体地说: for var_1, ..., var_n in explist do block end 阅读全文
posted @ 2011-08-11 14:30 麦飞 阅读(423) 评论(0) 推荐(0)
摘要:Lua没有打算被用来进行大型的程序设计,相反,Lua目标定于小型到中型的程序设计,通常是作为大型系统的一部分。典型的,被一个或者很少几个程序员开发,甚至被非程序员使用。所以,Lua避免太冗余和太多的人为限制。如果你不想访问一个对象内的一些东西就不要访问(If you do not want to access something inside an object, just do not do it.)。1functionnewAccount(initialBalance)23localself={balance=initialBalance}45localwithdraw=function( 阅读全文
posted @ 2011-08-11 11:23 麦飞 阅读(387) 评论(0) 推荐(0)
摘要:lua的类有点像javascript,但是更简明灵活,table即对象,对象就是类。Metatables比起ruby里的MetaClass更加好用,缺点是实例化和继承的代码有点多,不像ruby里的“<”和“<<”,继承链就是查找方法时的方法链。 1Account={2test1=function(a)print("Accounttest1")end3}45Account.test2=function(a)print("Accounttest2")end67functionAccount.test3(a)print("Accou 阅读全文
posted @ 2011-08-11 11:06 麦飞 阅读(3480) 评论(0) 推荐(0)
摘要:1,loadstring 编译的时候不关心词法范围: local i = 0 f = loadstring("i = i + 1") g = function () i = i + 1 end 这个例子中, 和想象的一样g 使用局部变量i , 然而f 使用全局变量i ; loadstring 总是在全局环境中编译他的串。2,require 和dofile 完成同样的功能但有两点不同: =>require 会搜索目录加载文件 => require 会判断是否文件已经加载避免重复加载同一文件。由于上述特征, require 在Lua 中是加载库的更好的函数。 为了确 阅读全文
posted @ 2011-08-10 11:57 麦飞 阅读(719) 评论(0) 推荐(0)
摘要:http://www.vimer.cn/2009/11/vim%EF%BC%88gvim%EF%BC%89%E7%BC%96%E7%A8%8B%E5%AD%97%E4%BD%93%E6%8E%A8%E8%8D%90.html 阅读全文
posted @ 2011-08-08 16:56 麦飞 阅读(1338) 评论(0) 推荐(0)
摘要:重载运算符的函数一般格式如下:重载运算符 operator 运算符名称(形参表列)例如,想将“+”用来Complex类(复数类)的加法计算,函数的原型可以:Complex operator+(Complex &c1,Complex &c2);operator是关键字,专门用来定义重载运算符的函数的。我们可以把operator+看作函数名,意思是“对运算符+重载”。Cpp代码#include"stdafx.h"#include<iostream>usingnamespacestd;//复数classComplex{private:doublerea 阅读全文
posted @ 2011-08-08 14:42 麦飞 阅读(247) 评论(0) 推荐(0)