码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Lua面试】 迭代器和泛型For


    Lua面试题重点提问

    迭代器和闭包

    迭代器Iterator:是一种可以遍历一个集合中所有元素的结构。
    迭代器函数Iterator():每次调用,函数会返回“下一个”元素的数值(不是返回索引)。

    闭包:可以访问自身环境中一个或多个局部变量(捕获引用环境中的变量)

    迭代器和闭包的关系

    调用迭代器函数,会返回下一个元素,闭包保存下一个元素的值。

    创建闭包结构

    创建闭包:创建一个非局部变量
    闭包结构:闭包self+创建闭包机器封装变量的工厂Factory

    泛型for

    泛型for为了迭代而设计
    一次迭代循环,泛型for内部保存了迭代函数,不需要iter
    每次做新的迭代,都会再次调用迭代函数,返回nil结束迭代

    闭包、迭代器、泛型for示例

    在这里插入图片描述

    一般不会自己去定义迭代器,而是去使用已经提供的迭代器

    泛型for的语法

    创建一个闭包开销可能会很大的问题
    为了解决开销问题,那就使用泛型for自己保存迭代状态

    泛型for保存了三个值
    1个迭代函数,1个不可变状态,1个控制变量
    var-list :N个变量名组成的列表,逗号隔开
    exp-list:N个表达式组成的列表,通常只有一个,对迭代器工厂的调用

    控制变量:var-list 变量列表第一个

    for var-list in exp-list do body end
    for k,v in pairs(t) do print(k,v) end 
    
    • 1
    • 2

    泛型for内部流程

    1.泛型for使用不可变状态和控制变量作为参数来调用迭代函数
    2.迭代函数的返回值返给变量列表中声明的变量
    3.如果返回nil,循环结束,否则一直循环,再次调用迭代函数

    无状态迭代器

    无状态迭代器:自身不保存任何状态的迭代器,多个循环中使用一个无状态循环器,避免创建闭包的开销。
    一个无状态迭代器,只使用不可变变量和控制变量来为迭代生成下一个元素
    典型例子是ipairs,可以迭代一个序列中的所有元素

    例子:按顺序遍历表

    所有的复杂性都隐藏在迭代器中实现

    在这里插入图片描述

  • 相关阅读:
    Java学习06——运算符
    银行软件测试:基于互联网金融平台的测试框架设计与分析
    RabbitMQ进阶教程三(整合springboot,延迟队列,发布确认高级,备份交换机)
    技术干货 | MindSpore AI科学计算系列(五):AI框架加速海洋数值模拟
    Day58 739. 每日温度 496.下一个更大元素 I
    【Tensorboard】工具使用细节记录,实现训练数据保存及可视化
    ZMQ/ZeroMQ的三种消息模式
    如何保障Cookie的信息安全
    四、《任务列表案例》后端程序实现和测试
    DVWA-impossible代码审计
  • 原文地址:https://blog.csdn.net/qq_21407523/article/details/126372126
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号