没有数组的PHP反向生成器

时间:2019-06-03 04:34:31

标签: php generator

我有发电机:

function f() {
  foreach(range(1, 100) as $i) { 
    yield i;
  }
}

当我通过生成器将其反转时,是否有一种优雅的方法来实现另一个功能。

我不想使用数组,因为我希望能够切片新的生成器(反向)而不循环所有元素。

例如:

function reverseGen(gen) {...}

1 个答案:

答案 0 :(得分:1)

生成器没有内在的“终点”,例如while (true) yield $i++;。也无法访问生成器的特定元素,也无法向生成器询问其先前的值。生成器唯一可以做的就是询问它的下一个值,一旦完成,该值就消失了,无法再次访问它。

因此,没有,没有办法反向迭代生成器;您所要做的就是将其值存储在数组中,然后反向进行迭代。