在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;
}
答案 0 :(得分:4)
来自PHP rfc:generators
yield
表达式的返回值是使用send()
发送到生成器的任何内容。如果未发送任何内容(例如,在foreach
迭代期间),则返回null
。
您的foreach
代码永远不会send()
生成器,因此yield
始终会返回null
。