php群发不用foreach,如何在没有foreach的情况下使用PHP生成器?
第一个产生的价值没有被吞噬,你只是从来没有看过它.
$g = powGenerator();
echo $g->current(); //a
你然后两次发送值并恢复执行,$g-> valid()在此之后为真,因为你没有在第三次收益后恢复 – 发电机不完整而且可能还有更多要做的事情.考虑:
function powGenerator() {
yield pow((yield 'a'), (yield 'b'));
echo "Okay, finishing here now!\n";
}
$g = powGenerator();
echo $g->current(), "\n"; //a
echo $g->send(10), "\n"; //b
echo $g->send(2), "\n"; //100
$g->next(); // Resumes execution of the generator,
// which prints its own message and completes.
var_dump($g->valid()); //false
这个’输出:
a
b
100
Okay, finishing here now!
bool(false)
function powGenerator() {
return pow((yield 'a'), (yield 'b'));
echo "This will never print.";
}
$g = powGenerator();
echo $g->current(), "\n"; //a
echo $g->send(10), "\n"; //b
echo $g->send(2), "\n"; // Prints just the newline, you're moving on
// to a return which you must get explicitly.
var_dump($g->valid()); // Generator complete, you're free to get the return.
echo $g->getReturn(), "\n";
哪个输出:
a
b
bool(false)
100
至于在没有foreach的情况下单步执行它们 – Generator实现了Iterator,所以它有适当的方法来处理它:current,key,next,rewind和valid.有一点需要注意,如果你调用它,它将引发异常已经开始的发电机.
这样做的一个例子也演示了PHP 7的新generator delegation:
function letterGenerator() {
yield from range('a', 'z');
}
$g = letterGenerator();
while ($g->valid()) {
echo $g->current();
$g->next();
}
输出:
abcdefghijklmnopqrstuvwxyz
php群发不用foreach,如何在没有foreach的情况下使用PHP生成器?相关推荐
- 【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题
foreach语句使用总结 增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一个局部变量,这个局部变量的类型与part2中的对 ...
- php foreach是什么,php foreach用法是什么
php foreach用法是:foreach仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误,格式为[foreach(数组名 as 下标=>值)]. php forea ...
- php foreach 单箭头,PHP Foreach循环具有单个元素
我有一个函数来解析嵌套数组中的"条目": $data = Array( [date] => 'date' [entry] => Array( [0] => Arr ...
- Java 8 Iterable.forEach()与foreach循环
本文翻译自:Java 8 Iterable.forEach() vs foreach loop Which of the following is better practice in Java 8? ...
- php foreach详解,php foreach的用法详解,foreach怎么使用
php foreach的用法详解详细解释了PHP foreach的用法,php foreach的用法:1.通过语法"foreach(array _ expression as $ value ...
- LANDESK操作系统部署时,网卡启动后,自动进入pe选择菜单,而不用按F8 进行选择启动菜单的情况下,如何操作?...
LANDESK操作系统部署时,网卡启动后,自动进入pe选择菜单,而不用按F8 进行选择启动菜单的情况下,如何操作? 设置方法: 使用PXE的控制队列 PXE的控制队列是另一个远程图像PXE的部署操作系 ...
- RS485为什么需要隔离?什么情况下可以不用隔离?
RS485为什么需要隔离?什么情况下可以不用隔离? 一.设备及人身安全--高压的影响 二.远端接受异常--电势差的影响 三.数据异常,器件损坏--地环路的影响 3.总结 1.保证我们的设备不会接到有可 ...
- Win10为什么电脑在有密码的情况下,睡眠后不用输密码打开?
#为什么电脑在有密码的情况下,睡眠后不用输密码打开? 讲真的,小小年纪的我是从来都没有想到自己会遇到这种情况,于是在第N次打开电脑后,才发现好像有哪里不对劲???我刚刚是不是没输密码?于是本人就进行了 ...
- php if foreach个数记录,php foreach循环只返回数组中第一次迭代的值
我似乎无法确定为什么我的foreach循环能够循环所有5个生成的ProductionOrderID,但只返回第一个ID的数据. 我的理解是数组正确循环,因为你可以在这里看到当前结果:https://i ...
最新文章
- 如何打印网页版的发票_梦幻西游网页版:陷入瓶颈期,如何快速提升战力?氪金能解决问题...
- vue导航栏跳转路由
- Linux errno 列表
- “头腾大战”烧至在线办公:微信封禁飞书做错了吗?
- 简析 JSON 中的{}与[]
- 在NVME SSD上安装WIN7
- Julia :元编程、宏
- MATLAB线性规划相关函数用法
- 计算机组成原理bzc指令,计算机组成原理课程设计-09级.ppt
- 复杂美区块链专利再获外媒关注
- 机器人学习-matlab四足机器人控制仿真
- 【思想感悟】站在巨人的肩膀上
- stm8s003中串口中断问题
- 到底要怎么做,才能不堵车?
- #93 高精度除低精度
- 完了!Python黄了! 80%的程序员:痛快!你怎么看?
- Pytorch系列笔记(二)
- Nginx的配置与优化
- 文章汇总(Java篇)
- unity暂停游戏,退出游戏