“产量”在表达式上下文中的用途是什么?

Ntw*_*ike 2 php yield generator

如在 php 手册中,yield 可以使用表达式的一部分。$data = (yield $value); 但它没有为 $myval 分配任何东西。我在这里做错了吗?我们如何在表达式中使用它?

     function test_yield(){
        for ($i=0; $i <10; $i++) { 
             $myval = (yield $i);
             echo " \ ".$myval." / <br />";
        }

    }
    foreach (test_yield() as $value) {
        echo $value;
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*art 5

来自 PHP rfc:generators

yield表达式的返回值是使用send(). 如果没有发送任何内容(例如在foreach迭代期间),null则返回。

你的foreach代码从来没有send()什么事发电机,所以yield总是返回null