php yield 个人小解

手册关于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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值