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

 

    摘要: 通向天才之路 : 2d引擎图底层图形模块分析 我记得从看灌蓝高手开始,我就喜欢上了樱木花道这个角色.这个四肢发达头脑简单的单细胞动物身上有种说不清楚的可爱,特别是那种练习时候的认真努力和在别人面前炫耀时候大声笑着说:"我果然是天才".试想一下,csdn之中有几人做的到如此率真. 许多人认为程序员应该谦虚,应该低调一点.但是这种想法是在是让我觉得很好笑呢,那些人有没有想过为什么?......
 ·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......


Programming in Lua翻译--More about Functions
原文参考: http://www.lua.org/pil/index.html

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

【推荐阅读:网络游戏中的网络编程

6.more about functions 【扩展信息:我收集的CS地图&mod制作网址

lua中的函数是带有词法定界(lexical scoping)的第一类值(first-class values).

 第一类值指:在lua中函数与其他值(数值,字符串)一样,函数可以被存放在变量中,也可以存放在表中,可以作为函数的参数,还可以作为函数的返回值.

 词法定界指:函数可以访问他内部嵌套的函数中的变量.这一特性给lua提供了强大的编程能力.

 lua中关于函数稍微难以理解的是函数也可以没有名字,匿名的.当我们提到函数名(比如print),实际上是说一个指向函数的变量,像其持有其他类型值的变量一样

  a = {p = print}

     a.p("hello world") --> hello world

     print = math.sin  -- `print now refers to the sine function

     a.p(print(1))     --> 0.841470

     sin = a.p         -- `sin now refers to the print function

     sin(10, 20)       --> 10      20

 既然函数是值,那么表达式也可以创建函数了,lua中我们经常这样写:

  function foo (x) return 2*x end

 这实际上是利用lua提供的"语法上的甜头"(syntactic sugar)的结果,下面是原本的函数:

  foo = function (x) return 2*x end

 函数定义实际上是一个赋值语句,将类型为function的变量赋给一个变量.我们使用function (x) ... end 来定义一个函数与使用{}创建一个表一样.

 table标准库提供一个排序函数,接受一个表作为输入参数并且排序表中的元素.这个函数必须能够对不同类型的值(字符串或者数值)按升序或者降序进行排序.lua不是尽可能多地提供参数来满足这些情况的需要,而是接受一个排序函数作为参数(类似c++的函数对象),排序函数接受两个排序元素作为输入参数,并且返回两者的大小关系,例如:

  network = {

        {name = "grauna",  ip = "210.26.30.34"},

        {name = "arraial", ip = "210.26.30.23"},

        {name = "lua",     ip = "210.26.23.12"},

        {name = "derain",  ip = "210.26.23.20"},

      }

 如果我们想通过表的name域排序:

  table.sort(network, function (a,b)

        return (a.name > b.name)

     end)

 以其他函数作为参数的函数在lua中被称作高级函数,高级函数在lua中并没有特权,只是lua把函数当作第一类函数处理的一个简单的结果.

下面给出一个绘图函数的例子:

  function eraseterminal ()                                   

              io.write("\27[2j")                                    


...   下一页
 ·3d engine 的设计架构     »显示摘要«
    摘要:introduction (简介) 让咱们谈谈你如何撰写一份提供优雅性能的3d引擎。你的引擎需要提供的包括:曲面(curved surfaces)、动态光线(dynamic lighting)、体雾(volumetric fog)、镜面(mirrors)、入口(portals)、天空体(skyboxes)、节点阴影(vertex shaders)、粒子系统(particle systems)、静......
» 本期热门文章:

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