Реверсивный генератор PHP без массива - PullRequest
0 голосов
/ 03 июня 2019

У меня есть генератор:

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

Есть ли элегантный способ сделать другую функцию, когда я передам генератор, чтобы повернуть его вспять.

Я не хочу использовать массив, поскольку я хочу иметь возможность нарезать новый генератор (реверс) без зацикливания всех элементов.

Например:

function reverseGen(gen) {...}

1 Ответ

1 голос
/ 03 июня 2019

Нет собственного «конца» для генератора, например, while (true) yield $i++;.Также нет способа получить доступ к определенному элементу генератора или запросить у него предыдущее значение.Единственное, что вы можете сделать с генератором, это запросить его следующее значение, и как только вы это сделаете, это значение исчезнет, ​​и вы не сможете получить к нему доступ снова.

Итак, нет, нет способа перебрать генератор в обратном порядке;все, что вы можете сделать, это сохранить его значения в массиве и повторить это в обратном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...