Lua中函数

1,lua中函数属于“第一类值”(与其他传统类型值具有相同的权利),函数可以存贮到变量或table中,可以作实参和其他函数返回值

2,函数与其他值一样都是匿名的,它们都没有名称,所谓的函数名实际上是一个持有某函数的变量

     function foo (x)  return 2*x     end

  是这种方式的简写    

    foo = function (x)  return 2*x     end

3,closure(闭合函数)

  function newCounter()

    local i = 0

      return function()

          i = i+1

          return i 

      end

  end

  c1 = newCounter()

  c2 = newCounter()

  print(c1())-->1 一个闭包(一个函数加上该函数所需访问的所有“非局部的变量”)

  print(c1())-->2 

  pirnt(c2())-->1 一个新的闭包

4,非全局的函数

  注意:local fact= function(n)

        if n == 0 then return 1

        else return n*fact(n-1) --错误

        end

      end

   此时 函数尚未完成,语句中fact是全局的,解决方案:先声明局部变量 local fact

 

posted @ 2015-12-03 10:37  这个西瓜不甜  阅读(180)  评论(0编辑  收藏  举报