1
function yielding()
{
    for ($i = 0; $i < 10; $i++) {
        var_dump(yield);
    }
}

$y = yielding();

foreach ($y as $val) {
    $y->send('foo');
}

出力:

string(3) "foo"
NULL
string(3) "foo"
NULL
string(3) "foo"
NULL
string(3) "foo"
NULL
string(3) "foo"

私は出力が 10 回になると予想していましたstring(3) "foo"が、代わりに出力は 1NULLと 1 string(3) "foo"(9 回) です。それはなぜです?generator->send() は 1 回の繰り返しをスキップしますか?

4

2 に答える 2