lua 中的闭包

带入隐藏值(不能被外部访问的)实现数据保护

例1.

   function newCounter()
    local i = 0
    return function() -- anonymous function
          i = i + 1
        return i
    end
  end

  c1 = newCounter()
  print(c1()) --> 1
  print(c1()) --> 2

  注:对 i的值进行了保护,外部只能得到i所带来的效应,不能访问i
 

例2.

  function myPower(x)
    return function(y)

         return y^x

       end
  end

  power2 = myPower(2)
  power3 = myPower(3)

  print(power2(4)) --4的2次方
  print(power3(5)) --5的3次方
  print(myPower(2)(3)) --3的2次方

  注:xy分两次进行了传入

posted on 2014-11-25 16:28  AD_1990  阅读(120)  评论(0)    收藏  举报

导航