美文网首页
LUA 的闭包

LUA 的闭包

作者: 园Flora | 来源:发表于2021-02-24 09:46 被阅读0次

https://blog.csdn.net/sbddbfm/article/details/94424695 参考文章

闭包:有一个函数和该函数会访问到的非局部变量(且不是全局变量)(或者upvalue)组成的。

就是说这个函数取变量取不到的时候就会向从他上级函数里找,找到后哪怕上级函数没有再执行了,但是这个变量还存在。

闭包是运行的时候形成的,运行的时候upvalue会单独开辟一块内存来存放


local baseFunc = {}

    baseFunc.create = function (n)

        local i = 0

        return function ( )

            n=n+1

            print(n)

            i = i+1;

            print("i=",i)

        end

    end

    local f1 = baseFunc.create(100)

    f1()

    f1()

    local f2 = baseFunc.create(200)

    f2()

    f2()

    local i = 1

    repeat

      name, val = debug.getupvalue(f1, i)   --获取upvalue的值

      if name then

        print ("index", i, name, "=", val)

            if(name == "n") then

                debug.setupvalue(f1,2,10)  --修改upvalue的值

            end

        i = i + 1

      end -- if

    until not name

    f1()

image.png

相关文章

  • lua解释器(函数以及upval)

    先来看看lua闭包的定义这个部分代码注释都在我github上 可以观察lua闭包,不仅包含proto还包含 Up...

  • Lua语言学习教程

    lua闭包 函数尾调用 迭代器

  • lua 闭包

  • LUA 的闭包

    https://blog.csdn.net/sbddbfm/article/details/94424695[ht...

  • LUA 的闭包

    https://blog.csdn.net/sbddbfm/article/details/94424695 参考...

  • lua闭包函数

    简单释义:函数里套函数,里层函数可以访问外层函数的所有局部 变量 1,lua中函数是第一类值 (他们可以存储在变量...

  • Lua 闭包(Closure)

    今天看到一个非常生动的使用闭包概念的代码片段,决定记录下来,这个代码出自 Kong 的插件 rate-limiti...

  • Lua语法 闭包

    子函数可以使用父函数中的局部变量,这种行为叫做闭包闭包组成:外部函数+外部函数创建的upvalue+内部函数 问题...

  • Lua极简入门(七)——函数高级特性(闭包)

    闭包 当出现一个函数内嵌套另一个函数时,嵌套函数可以访问父函数的数据及资源,称为闭包。Lua的闭包原则就是一个函数...

  • 基础: Lua函数闭包

    函数是所有编程语言的执行单元或者说是行为,函数编译之后由一系列数据组成,比如指令集数组、常量数组、调试信息、本地变...

网友评论

      本文标题:LUA 的闭包

      本文链接:https://www.haomeiwen.com/subject/rbijfltx.html