简介
当调用生成器函数时,内部会返回一个新的 Generator 类对象。它实现了迭代器接口。迭代器接口定义了以下抽象方法
- Iterator::current – 返回当前元素
- Iterator: :key — 返回当前元素的键
- Iterator::next — 向前移动到下一个元素
- 迭代器: :rewind — 将迭代器倒回到第一个元素
- Iterator::valid — 检查当前位置是否有效
生成器充当仅前向迭代器对象,并提供可调用的方法来操纵生成器的状态,包括向生成器发送值和从生成器返回值。
生成器作为交互器
在下面的示例中,生成器函数在生成器对象的文件中生成行,可以使用 oreach 循环遍历这些行。还可以调用诸如 current() 和 next() 之类的迭代器方法。但是,由于生成器是只向前迭代器,因此调用 rewind() 方法会抛出异常
示例
rewind(); echo $file->current(); $file->next(); echo $file->current(); ?>
登录后复制
输出
遍历文件行后,显示如下致命错误
PHP User Defined Functions PHP Function Arguments PHP Variable Functions PHP Internal (Built-in) Functions PHP Anonymous functions PHP Arrow Functions PHP Fatal error: Uncaught Exception: Cannot rewind a generator that was already run
登录后复制
以上就是PHP生成器与迭代器对象的比较的详细内容,更多请关注php中文网其它相关文章!