当一个生成器函数被第一次调用,会返回一个内部Generator类的对象. 这个对象以和前台迭代器对象几乎同样的方式实现了Iterator 接口。

Generator 类中的大部分方法和Iterator 接口中的方法有着同样的语义, 但是生成器对象还有一个额外的方法: send().

CautionGenerator 对象不能通过new实例化

Example #1 The Generator class<?php

class Generator implements Iterator {

public function rewind(); //Rewinds the iterator. 如果迭代已经开始,会抛出一个异常。

public function valid(); // 如果迭代关闭返回false,否则返回true.

public function current(); // Returns the yielded value.

public function key(); // Returns the yielded key.

public function next(); // Resumes execution of the generator.

public function send($value); // 发送给定值到生成器,作为yield表达式的结果并继续执行生成器.

}

?>

Generator::send()

当进行迭代的时候Generator::send() 允许值注入到生成器方法中. 注入的值会从yield语句中返回,然后在任何使用生成器方法的变量中使用.

Example #2 Using Generator::send() to inject values<?php

function printer() {

while (true) {

$string = yield;

echo $string;

}

}

$printer = printer();

$printer->send('Hello world!');

?>

以上例程会输出:Hello world!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php生成对象吗,php生成器对象相关推荐

  1. Python生成器对象send()方法用法

    关于生成器基本用法请参考详解Python生成器函数和生成器对象的原理和用法 >>> def f():     yield from 'abcdefg'     #使用yield表达式 ...

  2. 详解Python生成器函数和生成器对象的原理和用法

    包含yield语句的函数可以用来创建生成器对象,这样的函数也称生成器函数.yield语句与return语句的作用相似,都是用来从函数中返回值.与return语句不同的是,return语句一旦执行会立刻 ...

  3. python特性(八):生成器对象的send方法

    生成器对象是一个迭代器.但是它比迭代器对象多了一些方法,它们包括send方法,throw方法和close方法.这些方法,主要是用于外部与生成器对象的交互.本文先介绍send方法. send方法有一个参 ...

  4. 名字生成器 php,php生成器对象

    当一个生成器函数被第一次调用,会返回一个内部Generator类的对象. 这个对象以和前台迭代器对象几乎同样的方式实现了Iterator 接口. Generator 类中的大部分方法和Iterator ...

  5. 生成器对象的send方法

    python特性(八):生成器对象的send方法 <div class="article_manage clearfix"><div class="ar ...

  6. sketchup生成面域插件_SU对象切割插件,传说中的SU模型切割神器!

    小吧又来给大家安利神仙插件了,今天分享的是SketchUp中切割神器:对象切割 你看他像不像你倔强的稀疏头发呢? 插件功能介绍 对象切割 - SUAPP编号298 - 对象切割插件功能可以通过两点切割 ...

  7. 生成器对象(Generator)

    生成器对象(Generator )是由一个 generator function 返回的,它同时符合可迭代协议和迭代器协议. 语法 function* gen() { yield 1;yield 2; ...

  8. python保存类对象_python 存储类对象吗

    Python源码读后小结 Python 笔记 前言(还是叫杂记吧) 在python中一切皆对象, python中的对象体系大致包含了"类型对象", "Mapping对象( ...

  9. java查看对象锁级别_对象级别锁 vs 类级别锁(Java)

    前言 对于多线程(并发)和Spring Boot这两块在同步进行学习中,在看到使用synchronized关键字使操作同步时,看到和C#中不一样的东西,所以这里呢,就深入学习了下,若有错误之处,还望指 ...

最新文章

  1. hexo博客更新主题后上传Git操作
  2. html怎么随机放图片,HTML技术:如何在网页中图片的随机显示
  3. 二元偏导数存在的条件_多元函数 可导、可微、连续、一阶偏导数连续 之间关系的总结...
  4. [Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]
  5. LeetCode-1052:爱生气的书店老板
  6. 90 后篮球运动员成功转型 iOS 开发,过程超刺激
  7. RabbitMQ如何解决各种情况下丢数据的问题
  8. 解析搜狗微信文章页面源码的日期publish_time为空的解决办法(只谈思路,不提供代码)
  9. excel 第18讲:lookup函数与数组
  10. 【自学Python:Day2】磨洋工的我一周一课……
  11. 电影评论画像制作(豆瓣肖申克的救赎为例)
  12. 程序猿,你关心过自己的健康吗?
  13. 机械振动信号15个时域统计指标
  14. 【数字图像处理】实验一 图像的平移,缩放和旋转(vs2017+opencv)
  15. 递归算法的时间复杂度的分析方法
  16. 任天堂超级玛丽(SuperMario)改编的超级企鹅(java)搞笑版,绝对给力
  17. 被故事选中,没资格懵懂。
  18. 新一代视频编码标准:VVC、AVS3
  19. 对字下面添加下划虚线
  20. 计算机辅助设计的技术论文,【计算机病毒论文】谈计算机辅助设计课程微课化教学(共3741字)...

热门文章

  1. Editplus的正则表达式
  2. hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)...
  3. asp.net 2.0下用access开发的时候要注意的问题
  4. acwing 3 完全背包
  5. HTML/BODY的背景渲染原理
  6. Siki_Unity_2-5_DOTween动画插件(未学)
  7. JAVAWEB 一一 SpringMVC(注解)
  8. linux下配置vsftpd虚拟用户为登录用户
  9. Spring与Quartz的整合实现定时任务调度
  10. [转载] 说说JSON和JSONP,也许你会豁然开朗