параллелизм — PHP документация для yield (rvalue) в качестве сопрограммы

Вы можете создать генератор в PHP, который выдает значения:

function genOneTwoThree() {
foreach ([1,2,3] as $i => $number)
yield $i => $number;
}

Тогда вы можете потреблять их как:

foreach (genOneTwoThree() as $i) {
echo $i;
}

Это использование lvalue задокументировано здесь: https://secure.php.net/manual/en/language.generators.syntax.php#control-structures.yield

Но yield также может быть использован как значение:

function printer() {
while (true) {
$string = yield;
echo $string;
}
}
$printer = printer();
$printer->send('Hello world!');
$printer->send('Bye world!');

Этот «потребительский» пример приведен в документации «Генератор» на https://secure.php.net/manual/en/generator.send.php

Есть ли другое место, которое фактически документирует этот тип использования? У меня есть еще один конкретный вопрос:

  • Могут ли функции rvalue возвращать что-то, и когда это происходит?
  • Что происходит, когда функции выхода rvalue влияют на глобальное состояние
  • Можете ли вы использовать rvalue и lvalue yield для фильтрации генератора?

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …