2

如 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;
    }
4

1 回答 1

5

来自 PHP rfc:generators

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

您的foreach代码从不将send()任何内容放入生成器中,因此yield始终返回null.

于 2013-10-16T06:24:11.240 回答