码农知识堂 - 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,可以迭代一个序列中的所有元素

    例子:按顺序遍历表

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

    在这里插入图片描述

  • 相关阅读:
    SpringMVC框架的介绍与使用
    Rust 学习笔记:快速上手篇
    JDBC连接的优化
    高薪程序员&面试题精讲系列132之微服务之间如何进行通信?服务熔断是怎么回事?你熟悉Hystrix吗?
    Spark SQL 从入门到精通 - Spark SQL 行转列、列转行案例
    电话自动拨号在电脑上自动拨打
    计算机毕业设计Java个性化穿搭推荐系统(源码+系统+mysql数据库+Lw文档)
    系统移植 DAY4(FSMP1A开发板开发阶段部署)
    ANSI/UL 94 5-V级垂直燃烧试验
    借助 Windows 事件转发进行入侵检测
  • 原文地址:https://blog.csdn.net/qq_21407523/article/details/126372126
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号