【问题标题】:PHP reverse generator without array没有数组的PHP反向生成器
【发布时间】:2019-10-18 15:27:52
【问题描述】:

我有发电机:

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

当我通过生成器来反转它时,是否有优雅的方法来创建另一个函数。

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

例如:

function reverseGen(gen) {...}

【问题讨论】:

  • 请举例说明您所说的“反向生成器”。什么输入的预期结果是什么?
  • 数字从 100 到 1 递减 1

标签: php generator


【解决方案1】:

生成器没有内在的“结束”,例如while (true) yield $i++;。也无法访问生成器的特定元素,也无法向生成器询问其先前的值。生成器唯一能做的就是请求它的下一个值,一旦你这样做了,那个值就消失了,你不能再次访问它。

所以,不,没有办法反向迭代生成器;您所能做的就是将其值存储在一个数组中并反向迭代。

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 2010-10-31
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    相关资源
    最近更新 更多