• php生成器


    生成品总览

    生成器语法

    官方示例代码一

    <?php
    function xrange($start, $limit, $step = 1) {
        if ($start < $limit) {
            if ($step <= 0) {
                throw new LogicException('Step must be +ve');
            }
    
            for ($i = $start; $i <= $limit; $i += $step) {
                yield $i;
            }
        } else {
            if ($step >= 0) {
                throw new LogicException('Step must be -ve');
            }
    
            for ($i = $start; $i >= $limit; $i += $step) {
                yield $i;
            }
        }
    }
    
    /* 
     * 注意下面range()和xrange()输出的结果是一样的。
     */
    
    echo 'Single digit odd numbers from range():  ';
    foreach (range(1, 9, 2) as $number) {
        echo "$number ";
    }
    echo "
    ";
    
    echo 'Single digit odd numbers from xrange(): ';
    foreach (xrange(1, 9, 2) as $number) {
        echo "$number ";
    }
    ?>

    官方示例代码二

     1 <?php
     2 function gen_one_to_three() {
     3     for ($i = 1; $i <= 3; $i++) {
     4         //注意变量$i的值在不同的yield之间是保持传递的。
     5         yield $i;
     6     }
     7 }
     8 
     9 $generator = gen_one_to_three();
    10 foreach ($generator as $value) {
    11     echo "$value
    ";
    12 }
    13 ?>
    $generator = gen_one_to_three();是不执行gen_one_to_three()方法的,因为有yield关键字,只有在foreach迭代的时间才执行。
  • 相关阅读:
    项目需求分析
    对软件开发的感想
    趣拼图最后完成及总结
    UML用例图
    数据流图和数据流程图
    第三代迭代目标
    Scrum的三种角色划分及小组成员分工
    WBS Model
    团队开发—百科全书软件项目
    开发流程
  • 原文地址:https://www.cnblogs.com/jimzbom/p/9607693.html
Copyright © 2020-2023  润新知