牛骨文教育服务平台(让学习变的简单)
博文笔记

php yield 个人小解

创建时间:2017-01-09 投稿人: 浏览次数:197
手册关于yield 的介绍  http://php.net/manual/zh/language.generators.syntax.php
手册关于 Generator 的介绍 http://php.net/manual/zh/generator.send.php

<?php
function xrange ()
{
    while (1) {

        $a = (yield "11"); //yield 表达式
        echo $a;
    }
}

$a = xrange();//返回一个生成器

echo $a->current();//返回当前产生的值

echo "<br>";

$a->send("33");//向生成器中传入一个值,并且当做 yield 表达式的结果,然后继续执行生成器。

echo "<br>";

echo $a->current();

echo "<br>";

$a->send("22");

echo "<br>";

echo $a->current();

输出结果:

11
33
11
22
11

第一次 调用 

 $a->current();

调用   yield "11"  返回 "11"  并且在这里被 停住 此时 $a  是一个表达式

调用  

$a->send("33");
因为 $a 是一个yield 表达式,所以 $a = "33"; 所以输出33 , 由于是一个永真循环。。所以这个过程会不断运行。

个人见解,希望大牛给予指导,继续思考php的yield。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。