今天 PHP 团队发布了PHP 5.5.0版本,其中包括对生成器的支持。阅读文档,我注意到它完全可以用数组做。
PHP 团队生成器示例:
// Only PHP 5.5
function gen_one_to_three() {
for ($i = 1; $i <= 3; $i++) {
// Note that $i is preserved between yields.
yield $i;
}
}
$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}
结果:
1
2
3
但我可以使用数组做同样的事情。而且我仍然可以与早期版本的 PHP 保持兼容。
看看:
// Compatible with 4.4.9!
function gen_one_to_three() {
$results = array();
for ($i = 1; $i <= 3; $i++) {
$results[] = $i;
}
return $results;
}
$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}
那么问题来了:这个新特性存在的目的是什么?我必须在不使用新功能的情况下播放所有文档示例,将其替换为数组。
谁能给出一个很好的解释,也许是一个旧版本不一定不可能的例子,但使用生成器可以帮助开发?