Saltar al contenido

07 · Coincidencia de Patrones

Transforma un valor antes del match

Un patrón (parse_date -> .Ok(date)) aplica el transformador de un argumento a la entrada y compara su resultado con el patrón interno. Cada intento de un patrón de view llama al transformador una vez; los enlaces exitosos reutilizan ese resultado. Si no coincide, la ejecución continúa con el brazo siguiente. El transformador debe tener tipos concretos y no puede consumir ni producir recursos lineales. Úsalo directamente en el patrón; los transformadores de view en cuerpos de aliases todavía se rechazan.

En esta página

Un patrón (parse_date -> .Ok(date)) aplica el transformador de un argumento a la entrada y compara su resultado con el patrón interno. Cada intento de un patrón de view llama al transformador una vez; los enlaces exitosos reutilizan ese resultado. Si no coincide, la ejecución continúa con el brazo siguiente. El transformador debe tener tipos concretos y no puede consumir ni producir recursos lineales. Úsalo directamente en el patrón; los transformadores de view en cuerpos de aliases todavía se rechazan.

Ejemplo completo

Transforma un valor antes del match.

16-view-patterns.zolo
Playground
// Convert incoming fields at the pattern boundary, then match the typed result.

enum Quantity { Valid(int), Invalid }

fn read_quantity(raw: str) -> Quantity {
    return match raw {
        "one" => Quantity::Valid(1),
        "two" => Quantity::Valid(2),
        _ => Quantity::Invalid
    }
}

fn describe((read_quantity -> .Valid(quantity)): str) -> str = "{quantity} items"
fn describe(_: str) -> str = "unknown quantity"

var total = 0
for case (read_quantity -> .Valid(quantity)) in ["one", "invalid", "two"] {
    total += quantity
}
assert(total == 3)
assert(describe("two") == "2 items")
assert(describe("invalid") == "unknown quantity")
print("Accepted {total} items")

Referencia

Referencia · Programa fuente

zolo run examples/features/40-syntax-fourth/16-view-patterns.zolo --no-cache

Consulta también

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br