php yield

send('Foo');
// $logger->send('Bar');


function gen() {
    
    $ret = (yield 'yield1');
    echo $ret . '---1-';
    $ret = (yield 'yield2');
    echo $ret . '---2-';
    $ret = (yield 'yield3');
    echo $ret . '---3-';
}

$gen = gen();
// echo $gen->rewind();
echo $gen->current() . 'aaa-
'; echo $gen->send('ret1'). 'bbb-
'; echo $gen->send('ret2') . 'ccc-
'; echo $gen->send('ret3') . 'ddd-
'; //yield是中断点! // yield1aaa- :遇到yield就中断了,直接返回yield1 // ret1---1-yield2bbb- :发送了ret1,在gen中,第一个输出刚发送的ret1,同时输出:--1-,程序遇到第二个yield,输出yield2 // ret2---2-yield3ccc- // ret3---3-ddd-

 

你可能感兴趣的:(php)