我有发电机:
function f() {
foreach(range(1, 100) as $i) {
yield i;
}
}
当我通过生成器将其反转时,是否有一种优雅的方法来实现另一个功能。
我不想使用数组,因为我希望能够切片新的生成器(反向)而不循环所有元素。
例如:
function reverseGen(gen) {...}
答案 0 :(得分:1)
生成器没有内在的“终点”,例如while (true) yield $i++;
。也无法访问生成器的特定元素,也无法向生成器询问其先前的值。生成器唯一可以做的就是询问它的下一个值,一旦完成,该值就消失了,无法再次访问它。
因此,没有,没有办法反向迭代生成器;您所要做的就是将其值存储在数组中,然后反向进行迭代。