typestar

Generadores en PHP

Funciones que producen valores de forma perezosa, un yield a la vez.

<?php
// generators produce values lazily, one yield at a time
function naturals(): Generator {
    for ($n = 1; ; $n++) {
        yield $n;
    }
}

foreach (naturals() as $n) {
    if ($n > 5) break;
    echo $n * $n, "\n";
}

// yield from delegates to another iterable
function letters(): Generator {
    yield from ['a', 'b'];
    yield 'c';
}
echo implode('-', iterator_to_array(letters(), false)), "\n";

Cómo funciona

  1. yield dentro de una función hace que devuelva un Generator.
  2. naturals es infinito; foreach extrae valores hasta el break.
  3. yield from delega en otro iterable a mitad de camino.
  4. iterator_to_array vacía un generador; false descarta las claves repetidas.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
378
Tokens
82
Ritmo de tres estrellas
80 tpm

Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 61 segundos.

Escribe este fragmento

Paso 1 de 3 en Toques modernos; paso 22 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →