文章分类 - Lua
摘要:http://wenku.baidu.com/view/0874a5f7ba0d4a7302763a99.html
阅读全文
摘要:http://blog.csdn.net/charlie_2010/article/details/6719891一个不幸的消息是Lua中没有内置sleep函数,我们需要DIY。有4种方法可以实现sleep函数,如下:方法1--在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源,强烈不推荐使用哦function sleep(n) local t0 = os.clock() while os.clock() - t0 <= n do endend方法2--调用系统的sleep函数,不消耗CPU,但是Windows系统中没有内置这个命令(如果你又安装Cygwin神马的也行)。
阅读全文
摘要:解决Lua语法缺失及替代措施是本文要介绍的内容,主要是来了解LUA语法的学习。Lua的一个设计方针是简单,能不加入的语言特性就尽量不加入。于是,Lua中缺少了一些我们常用的语法。下面仅以C语言做参考。缺少continue语句,虽然对逻辑实现没本质影响。但让我们在编程时,代码结构的写法有一些生硬的感觉,不灵活。缺少了switch-case语法,仅用if-elseif-else来替代,在选项比较多的时候,代码很难看,而且效率很低。没有逻辑运算符 AND, OR, NOT ,这在有些标志位组合表达式的表达上带来诸多不便。另外也说一下,觉得Lua里面设计得不爽的几点:不等号是~=, 而不是!=。个人觉
阅读全文
摘要:Lua中的模块(module)机制有点类似于C语言的动态库,可以将一些公共的代码放在模块中,以API的形式提供给Lua应用脚本使用。使用模块或许还可以做成像Android的Application Frameworks,建立一种新的应用程序编程模型,只是猜想。模块最简单的使用方式:view plainrequire“os”os.clock() tableLua语言共有8中数据类型,其中table(表)类型实现了“关联数组(associative array)”。table中可以保存各种数据类型。和table关联的metatable,它定义了表的操作的一些行为,比如:使用+操作时,会去查找meta
阅读全文
摘要:--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
阅读全文
摘要://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)
阅读全文
摘要://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基
阅读全文
摘要:用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
阅读全文
摘要: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
阅读全文
摘要:范性for的执行过程: 首先,初始化,计算in后面表达式的值,表达式应该返回范性for需要的三个值:迭代函数、状态常量、控制变量;与多值赋值一样,如果表达式返回 的结果个数不足三个会自动用nil补足,多出部分会被忽略。 第二,将状态常量和控制变量作为参数调用迭代函数(注意:对于for结构来说,状态常量没有用处,仅仅在初始化时获取他的值并传递给迭代函数)。 第三,将迭代函数返回的值赋给变量列表。 第四,如果返回的第一个值为nil循环结束,否则执行循环体。 第五,回到第二步再次调用迭代函数。 更具体地说: for var_1, ..., var_n in explist do block end
阅读全文
摘要: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(
阅读全文
摘要: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
阅读全文
摘要: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 中是加载库的更好的函数。 为了确
阅读全文
浙公网安备 33010602011771号