重读Lua程序设计—温故知新

重读Lua程序设计 温故知新

前7章

and 和 or 都是 短路求值 只在需要时才去评估第二个操作数

local x = a and b or c 需要 b != nil and b != false

![image-20240120100128060](C:\Users\Spell\AppData\Roaming\Typora\typora-user-images\image-20240120100128060.png

image-20240120100302665


操作符优先级

image-20240120100651423


table 链表设计思路

image-20240120100754828


table 显式用表达式来初始化索引值

image-20240120101035030


function 只有一个参数时 写法可忽略括号

image-20240120101200026


function多返回值时 注意 若调用处 不为表达式得最后一个元素,则只产生一个返回值

在调用时 也可以将一个函数调用放入一对圆括号中,从而迫使它只返回一个结果

print( ( foo2() ) )

image-20240120101331995

image-20240120101510243


unpack 函数

image-20240120102311685


变长参数

select

image-20240120102444033

image-20240120102657121


closure

image-20240120103042474

image-20240120105609755


匿名函数

image-20240120105657302

image-20240120105814470


function 尾调用

尾调用不会浪费栈空间 尾调用:调用完函数后 无需做其他事情就结束

image-20240120105911068


iterate 迭代器

closure 支持

一个closure 就是一种可以访问其外部嵌套环境中的局部变量的函数

对于 closure 而言 这些变量就可用于在成功调用之间保持状态值 从而使 closure 可以记住它在一次遍历中所在的位置

image-20240120110125499

image-20240120110337387

迭代器函数 恒定状态 控制变量

chatgpt 对恒定状态得解释

在Lua中,迭代器是一种特殊的函数,它可以通过多次调用来遍历一个集合或者序列。迭代器函数通常会返回两个值:下一个元素的值以及一个表示是否还有更多元素的状态。

迭代器的状态可以是恒定的,也可以是可变的。恒定状态是指在每次调用迭代器函数时都保持不变的状态。这种状态通常用于迭代器函数的内部变量或者常量。在每次调用迭代器函数时,恒定状态都会被保留,而不会受到外部环境的影响。

理解恒定状态的关键是要明确区分它与可变状态的不同。可变状态是指在每次调用迭代器函数时可能会改变的状态。这种状态通常用于记录当前迭代的位置或者其他需要随着迭代器的前进而改变的信息。

通过将恒定状态与可变状态分离,迭代器可以更加灵活地处理不同的迭代需求。恒定状态可以用于保存一些不变的信息,例如集合的大小或者迭代器的起始位置。可变状态则可以用于追踪当前的迭代位置,以便返回正确的下一个元素。

总而言之,恒定状态是指在每次调用迭代器函数时保持不变的状态,它可以用于保存一些固定的信息。通过将恒定状态与可变状态分离,迭代器可以更加灵活地处理不同的迭代需求。

image-20240120110542449

pairs ipairs 实现

image-20240120111037912

– 待续

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值