美文网首页
lua迭代器

lua迭代器

作者: 周末的游戏之旅 | 来源:发表于2019-09-23 11:36 被阅读0次
function dedai(t)
    local i = 0
    return function()
        print(i .. '最内部')
        i = i + 1
        return t[i]
    end
end

list = {1,2,3,5,2,1}
for i in dedai(list) do
    print(i)
end

在这段代码中,匿名函数访问了一个“非局部的变量”i,改变两用于保持一个计数器。出刊上去,由于创建变量i的函数(dedai)已经返回,所以之后每次调用匿名函数时,i都应该是已超出作用范围的。但其实不然,Lua会以closure的概念来正确地处理这种情况。简单地说,一个closure就是一个函数加上该函数所需访问的所有“非局部的变量”。如果再次调用dedai,那么它会创建一个新的局部变量i,从而也将得到一个新的closure。
参考:https://www.cnblogs.com/moonlightpoet/p/5684850.html

返回两个值的迭代器

function diedai2(t)
    local i = 0
    return function()
        i = i + 1
        if i > #t then
            return nil
        end
        return i,t[i]
    end
end

list = {1,2,3,5,2,1}
for i,v in diedai2(list) do
    print(i,v)
end

相关文章

  • Lua语言学习教程

    lua闭包 函数尾调用 迭代器

  • Lua 迭代器

    https://www.cnblogs.com/Richard-Core/p/4343635.html先放个入口网...

  • Lua 迭代器

    迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确...

  • lua迭代器

    在这段代码中,匿名函数访问了一个“非局部的变量”i,改变两用于保持一个计数器。出刊上去,由于创建变量i的函数(de...

  • lua学习之迭代器与泛型for第一篇

    迭代器与泛型 for 1 迭代器与 closure 「迭代器」是一种可以遍历一种集合中的所有元素的机制 在 lua...

  • lua--迭代器、模块、元表

    接着lua的使用,迭代器、模块和元表,元表为重点需要关注的内容 一、迭代器 pairs就是一个迭代器,它的返回值是...

  • lua入门笔记 目录

    lua的中文API lua入门笔记1 类型 表达式 语句 函数lua入门笔记2 深入函数 深入函数 迭代器与泛型f...

  • lua for循环迭代器

  • Lua迭代器与closure

    预备知识:lua函数是一种First-Class Value,即它与传统的变量并没有什么区别。它可以存储到变量中、...

  • lua迭代器和表

    迭代器:pairs :迭代 table,遍历表中所有的 key 和 valueipairs :按照索引从1开始,...

网友评论

      本文标题:lua迭代器

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