表达式上下文中“yield”的用法是什么?

时间:2013-10-16 06:16:42

标签: php generator yield

在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;
    }

1 个答案:

答案 0 :(得分:4)

来自PHP rfc:generators

  

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

您的foreach代码永远不会send() 生成器,因此yield始终会返回null