码迷,mamicode.com
首页 > 其他好文 > 详细

Lua程序设计 深入函数01

时间:2014-07-21 23:29:22      阅读:417      评论:0      收藏:0      [点我收藏+]

标签:style   io   cti   re   c   ar   

          在Lua中,函数是一种“第一类值”:表示在Lua中的函数与其他传统类型的值(例如:数字和字符串)是一样的,可以存储到变量(全局,局部均可)或table中,可以作为实参传递给其他函数,还可以作为其他函数的返回值。

         “词法域”:指一个函数可以嵌套在另一个函数中,内部的函数可以访问外部函数中的变量。

          Lua中的函数与所有其他值一样都是匿名的,当讨论一个函数时,实际上是在讨论一个持有某函数的变量。这与变量持有各种值一个道理,可以以多种方式来操作这些变量。

a = {p = print}
a.p("Hello World")  --->Hello World
print = math.sin   --->print现在引用了正弦函数。
a.p(print(1))   ---->0.841470
sin = a.p       --->sin 现在引用了print函数。
sin(10,20)    ---->10   20

        Lua中的函数可以理解成由一些表达式创建的,因此一个函数的定义实际就是一条赋值语句,这条语句创建了一种类型为“函数”的值,并将这个值赋予一个变量。

function foo(x)  return 2*x end  ======>  foo = function(x) return 2*x end 
可以将表达式“function(x) <body> end”视为一种函数的构造式,就像table的构造式{}一样。将这种函数构造式的结果视为一个“匿名函数”。

       可接受另一个函数作为实参的,称其是一个“高阶函数”。应用匿名函数来创建高阶函数所需的实参则可以带来更大的灵活性。

function derivative (f, delta)
  delta = delta or le - 4
  return  function(x)
          return (f(x + delta) - f(x)) / delta
         end
 end        对于特定的函数f调用derivative(f)将返回其导数。

Lua程序设计 深入函数01,布布扣,bubuko.com

Lua程序设计 深入函数01

标签:style   io   cti   re   c   ar   

原文地址:http://my.oschina.net/u/223340/blog/293574

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!