今天PHP团队发布了PHP 5.5.0版本,其中包含对生成器的支持。阅读文档时,我注意到它可以像处理数组一样处理生成器。
PHP团队生成器示例:
但是我可以使用数组来做同样的事情。而且我仍然可以保持与早期版本的PHP兼容。
来看一下:
所以问题是:这个新功能的存在的目的是什么?我已经玩过所有的文档示例,而没有使用新功能,而是用数组替代它。
有人能给出一个好的解释,也许还有一个不一定是在旧版本中不可能的例子,但使用生成器可以在开发中有所帮助吗?
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";
}
Result:
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";
}
所以问题是:这个新功能的存在的目的是什么?我已经玩过所有的文档示例,而没有使用新功能,而是用数组替代它。
有人能给出一个好的解释,也许还有一个不一定是在旧版本中不可能的例子,但使用生成器可以在开发中有所帮助吗?