函数闭包是Lua这一类

作者: 时时彩平台-编程  发布:2019-09-23
function createCountdownTimer  local ms = second * 1000  local function countDown()    ms = ms - 1    return ms  end  return countDownendtimer1 = createCountdownTimer(1)for i = 1, 3 do  printend

一个函数所使用的定义在它的函数体之外的局部变量(external local variable)称为这个函数的upvalue。在前面的代码中,函数countDown使用的定义在函数createCountdownTimer中的局部变量ms就是countDown的upvalue,但ms对createCountdownTimer而言只是一个局部变量,不是upvalue。函数闭包

一个函数和它的所有upvalue构成了一个函数 闭包。函数闭包是Lua这一类“函数式”语言的核心概念。Lua函数闭包与C函数的比较Lua函数闭包使函数在几次调用间具有保持自身状态的能力,从此角度看,与带静态局部变量的C函数相似。但二者其实截然不同:前者是一个运行时对象,后者只是一个静态地址;前者可以有“同一类型”的若干实例,每个实例都有自己的状态,而后者只是一个静态地址,谈不上实例化。

本文由时时彩平台发布于时时彩平台-编程,转载请注明出处:函数闭包是Lua这一类

关键词:

上一篇:坚果的含油量高
下一篇:没有了