@Pronchik1
)

Как реализовать итератор анонимным классом?

Нужно реализовать итератор анонимным классом,как это сделать?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 2
gscraft
@gscraft
Программист, философ
$o = new class ([1, 2, 3]) implements \Iterator {
    protected array $data;
    protected int $position;
    public function __construct(array $data) { $this->data = $data; $this->position = 0; }
    public function current () { return $this->data[$this->position]; }
    public function key () { return $this->position; }
    public function next () { ++$this->position; }
    public function rewind () { $this->position = 0; }
    public function valid () { return isset($this->data[$this->position]); }
};

foreach ($o as $i => $v) echo "$i => $v", PHP_EOL;
Ответ написан
SerafimArts
@SerafimArts
Senior Notepad Reader
$iterable = new class implements \IteratorAggregate
{
    public function getIterator(): \Traversable
    {
        yield from [1, 2, 3];
    }
};

foreach($iterable as $i) {
    echo $i . "\n";
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы