当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 原文参考: http://www.lua.org/pil/ind
 

 

    摘要:原文参考: http://www.lua.org/pil/index.html翻译本文章是个人爱好lua所至,转载请注明出处和作者.版权归原作者所有,未经允许不得将文章用于商业目的,否则造成的一切后果由该组织或个人承担,本人不承担任何法律及连带责任.请自觉遵守.6.more about functionslua中的函数是带有词法定界(lexical scoping)的第一类值(first-clas......
    摘要: 通向天才之路 : 2d引擎图底层图形模块分析 我记得从看灌蓝高手开始,我就喜欢上了樱木花道这个角色.这个四肢发达头脑简单的单细胞动物身上有种说不清楚的可爱,特别是那种练习时候的认真努力和在别人面前炫耀时候大声笑着说:"我果然是天才".试想一下,csdn之中有几人做的到如此率真. 许多人认为程序员应该谦虚,应该低调一点.但是这种想法是在是让我觉得很好笑呢,那些人有没有想过为什么?......


Programming in Lua翻译--8.Compilation, Execution, and Errors

原文参考: http://www.lua.org/pil/index.html

翻译本文章是个人爱好lua所至,转载请注明出处与作者.版权归原作者所有,未经允许不得将文章用于商业目的,否则造成的一切后果由该组织或个人承担,本人不承担任何法律及连带责任.请自觉遵守. 【程序编程相关:防外挂系列

【推荐阅读:网络游戏同步

8.compilation, execution, and errors 【扩展信息:网络游戏中的网络编程

 虽然我们把lua当作解释型语言,但是lua会首先把代码预编译成中间码然后再执行(很多解释型语言都是这么做的).在解释型语言中存在编译阶段听起来不合适,然而,解释型语言的特征不在于他们是否被编译,而是编译器是语言运行时的一部分,所以,执行编译产生的中间码速度会更快.我们可以说函数dofile的存在就是说明可以将lua作为一种解释型语言被调用.

 前面我们介绍过dofile,把它当作lua运行代码的chunk的一种原始的操作.dofile实际上是一个辅助的函数,真正完成功能的函数是loadfile;与dofile不同的是loadfile编译代码成中间码并且返回编译后的chunk作为一个函数,而不执行代码;另外loadfile不会抛出错误信息而是返回错误代码.我们可以这样定义dofile:

  function dofile (filename)

       local f = assert(loadfile(filename))

       return f()

     end

 如果loadfile失败assert会抛出错误.

 完成简单的功能dofile比较方便,他读入文件编译并且执行.然而loadfile更加灵活.在发生错误的情况下,loadfile返回nil与错误信息,这样我们就可以自定义错误处理.另外,如果我们运行一个文件多次的话,loadfile只需要编译一次,但可多次运行.dofile却每次都要编译.

 loadstring与loadfile相似,只不过它不是从文件里读入chunk,而是从一个串中读入.例如:

  f = loadstring("i = i + 1")

 f将是一个函数,调用时执行:i=i+1:

  i = 0

     f(); print(i)   --> 1

     f(); print(i)   --> 2

 loadstring函数功能强大,但使用时需多加小心.确认没有其它简单的解决问题的方法再使用.

 lua把每一个chunk都作为一个匿名函数处理.例如:chunk "a = 1",loadstring返回与其等价的function () a = 1 end

 与其他函数一样,chunks可以定义局部变量也可以返回值:

  f = loadstring("local a = 10; return a + 20")

     print(f())          --> 30


...   下一页
 ·programming in lua翻译--functions     »显示摘要«
    摘要:5.functions函数有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用2.计算并返回值,这种情况下函数作为赋值语句的表达式使用.语法:function func_name (arguments-list) statements-list;end;调用函数的时候,如果参数列表为空,必须使用()表明是函数调用. print(8*9, 9/8) a = math.sin(3) + ma......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE