为了账号安全,请及时绑定邮箱和手机立即绑定

求解答:yield 方式写法跟这种调用的写法什么区别?

求解答:yield 方式写法跟这种调用的写法什么区别?

PHP
吃鸡游戏 2019-03-07 08:19:11
yield 方式写法跟这种调用的写法什么区别? //普通方式 function getLines($file){ $file = fopen($file,'r'); try{ while(! feof($file)){ $line = fgets($file); show($line); } }finally{ fclose($file); } } function show($line){ echo $line.'<br>'; } $data = getLines('1.csv'); //生成器方式 function getLines($file){ $file = fopen($file,'r'); try{ while(! feof($file)){ $line = fgets($file); yield $line; } }finally{ fclose($file); } } $data = getLines('1.csv'); foreach($data as $n=>$line){ echo $line.'<br>'; }
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

每次进行yield操作, 可以把程序的控制权从函数内移到函数外, 同时可以给yield语句往内传值.

查看完整回答
反对 回复 2019-03-18
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

使用yield可以节省内存,生成的数据是foreach每遍历一条便执行一次,不用将所有数据一次性加载到内存中

查看完整回答
反对 回复 2019-03-18
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

你写的代码本职区别就是协程理念

在你这段代码里除了多了概念,运行基本区别没有,都是一次fgets阻塞,实际是没有利用协程让什么cpu

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 412 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信