函数名:Generator::send() 适用版本:PHP 5.5.0 及以上版本 用法:Generator::send() 函数用于向生成器发送一个值,并返回生成器的下一个值。它可用于控制生成器的...
函数名:Generator::send()
适用版本:PHP 5.5.0 及以上版本
用法:Generator::send() 函数用于向生成器发送一个值,并返回生成器的下一个值。它可用于控制生成器的迭代过程,允许在生成器的每次迭代中传递值。
语法:mixed Generator::send(mixed $value)
参数:
返回值:
示例代码:
function generatorExample() {
echo "Start\n";
$val = yield; // 暂停生成器并接收一个值
echo "Received: " . $val . "\n";
yield; // 暂停生成器
echo "End\n";
}
$generator = generatorExample();
$generator->send(10); // 向生成器发送值10,继续执行生成器
$generator->send(20); // 向生成器发送值20,继续执行生成器
输出结果:
Start
Received: 10
End
在上面的示例中,我们定义了一个生成器函数 generatorExample(),它会在接收到值后打印出该值,并在结束时打印出 "End"。然后,我们创建了一个生成器实例 $generator,并使用 send() 方法向生成器发送两个值。第一个值是 10,它会被传递给生成器,并打印出 "Received: 10"。然后生成器继续执行,打印出 "End"。
注意事项:
next() 方法来启动生成器,而不能使用 send() 方法。因为第一次调用生成器时,没有地方可以接收从 send() 方法发送的值。yield 语句时,它会暂停生成器并返回一个值。从第二次调用 yield 语句开始,它会在每次调用 send() 方法后继续执行生成器。yield 语句,而是直接使用 return 语句来结束生成器,则 send() 方法将会抛出一个 GeneratorExit 异常。yield from 语句来委托生成器,则 send() 方法会发送值到委托的生成器,而不是当前的生成器。yield 语句来返回一个值,则 send() 方法在第一次调用时会返回 null。更多关于 Generator::send() 函数的信息可以参考 PHP 官方文档:Generator::send()