@ 2019-02-11T22:16:28Z <?php
$iter = function($a) : void {
yield $a + 1;
};
$reset = function ($a) : bool {
return $a == 7;
};
$init = function () : int {
return 3;
};
function rotatable(callable $iterate, callable $reset, callable $init) : \Generator {
$i = $init();
$gen = $iterate($i);
while (TRUE) {
yield $i;
$i = $gen->current();
$reset($i) and $i = $init();
$gen = $iterate($i);
}
}
function rotate(\Generator $generator) {
$current = $generator->current();
$generator->next();
return $current;
}
$gen = rotatable($iter, $reset, $init);
for ($i = 0; $i < 15; $i++) {
var_dump(rotate($gen));
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.1.25 , 7.2.0 - 7.2.15 , 7.3.0 - 7.3.2 Fatal error: Generators may only declare a return type of Generator, Iterator, Traversable, or iterable, void is not permitted in /in/dcsQL on line 4
Process exited with code 255 . preferences:dark mode live preview
168.75 ms | 1395 KiB | 27 Q