摘要: 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 麦飞 阅读(2593) 评论(0) 推荐(0) 编辑
摘要: 范性for的执行过程: 首先,初始化,计算in后面表达式的值,表达式应该返回范性for需要的三个值:迭代函数、状态常量、控制变量;与多值赋值一样,如果表达式返回 的结果个数不足三个会自动用nil补足,多出部分会被忽略。 第二,将状态常量和控制变量作为参数调用迭代函数(注意:对于for结构来说,状态常量没有用处,仅仅在初始化时获取他的值并传递给迭代函数)。 第三,将迭代函数返回的值赋给变量列表。 第四,如果返回的第一个值为nil循环结束,否则执行循环体。 第五,回到第二步再次调用迭代函数。 更具体地说: for var_1, ..., var_n in explist do block end 阅读全文
posted @ 2011-08-11 14:30 麦飞 阅读(417) 评论(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 麦飞 阅读(377) 评论(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 麦飞 阅读(3476) 评论(0) 推荐(0) 编辑