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

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>';
    }
吃鸡游戏
浏览 413回答 3
3回答

三国纷争

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

一只名叫tom的猫

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

元芳怎么了

你写的代码本职区别就是协程理念 在你这段代码里除了多了概念,运行基本区别没有,都是一次fgets阻塞,实际是没有利用协程让什么cpu
打开App,查看更多内容
随时随地看视频慕课网APP