PHP 5.5 新特性
程序员文章站
2022-05-20 08:45:12
...
http://www.cnblogs.com/yjf512/p/3164400.html 生成器(Generators) 生成器是其中最令人期待的一个新特性,它使得开发者无需实现迭代器接口,就能实现遍历功能。编写一个实现迭代器接口的类,需要拷贝很多重复 的代码,现在使用生成器,就可以减少代码量和复
http://www.cnblogs.com/yjf512/p/3164400.html
生成器(Generators)
生成器是其中最令人期待的一个新特性,它使得开发者无需实现迭代器接口,就能实现遍历功能。编写一个实现迭代器接口的类,需要拷贝很多重复 的代码,现在使用生成器,就可以减少代码量和复杂度。
生成器通过新增的关键字yield实现,外形和普通函数类似,但是和函数只返回单个值不同的是,生成器可以生成任意个值。下面通过一个例子展示其 强大功能。考虑PHP中的range()函数,它返回介于$start和$end之间的数值数组,如以下用法:
php foreach (range(0, 1000000) as $number) { echo $number; }
这个例子中range()函数返回的数组将会占用大量的内存(大约100多Mb),撇开这个简单的例子,现实程序中,也经常需要创建巨大的数组,它们耗费 大量的时间和内存。引入生成器之后,我们就无需编写迭代器类,也能解决这个问题。生成器不会创建一个大数组,而是每次迭代的时候返回一个值。 上面这个例子可以改成使用生成器的版本:
php // define a simple range generator function generateRange($start, $end, $step = 1) { for ($i = $start; $i $step) {
推荐阅读
-
CentOS 7.x编译安装Nginx1.10.3+MySQL5.7.16+PHP5.2 5.3 5.4 5.5 5.6 7.0 7.1多版本全能环境
-
详解Java8 新特性之日期API
-
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
-
PHP5.5和之前的版本empty函数的不同之处
-
HTML5新特性 多线程(Worker SharedWorker)
-
ECMAScript6 新特性范例大全
-
ThinkPHP3.1新特性之多层MVC的支持
-
servlet3新特性_动力节点Java学院整理
-
Visual Studio 2017 针对移动开发的新特性汇总
-
ES6数组新特性解析(map,filter,forEach,reduce)