牛牛在线工具

Generator::send()

收录 8868 个 PHP 函数,含用途说明与用法示例。

Generator::send()

向生成器发送一个值,并返回生成器的下一个值

函数名:Generator::send() 适用版本:PHP 5.5.0 及以上版本 用法:Generator::send() 函数用于向生成器发送一个值,并返回生成器的下一个值。它可用于控制生成器的迭代过程,允许在生成器的每次迭代中传递值。 语法:mixed Generator::send(mixed $value) 参数: $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()