09 · Estructuras de Datos
Actualizaciones inmutables calculadas
Una actualización with acepta operadores compuestos como value += 1. Lee el campo anterior una vez y calcula el reemplazo sin modificar el original. Siguen aplicándose restricciones de visibilidad, tipos, caminos conflictivos y copias lineales.
En esta página
Una actualización with acepta operadores compuestos como value += 1. Lee el campo anterior una vez y calcula el reemplazo sin modificar el original. Siguen aplicándose restricciones de visibilidad, tipos, caminos conflictivos y copias lineales.
Ejemplo completo
Actualizaciones inmutables calculadas.
struct Counter { value: int, limit: int? }
let current = Counter { value: 2, limit: nil }
let next = current with { value += 1, limit ??= 10 }
print(current.value) // 2
print(next.value) // 3
print(next.limit) // 10
Reglas y comportamiento
Records, maps y actualizaciones · Documentación
Desde un checkout del repositorio:
zolo examples/features/computed_record_updates.zolo
Agrupar actualizaciones por ruta
Agrupe los cambios bajo la ruta común para evitar repetirla. Las actualizaciones compuestas y las comprobaciones de campos conservan las mismas reglas.
// Update several fields under the same path, leaving the original value intact.
struct Address { city: str, visits: int }
struct Person { name: str, address: Address }
let original = Person { name: "Ana", address: Address { city: "Recife", visits: 2 } }
let moved = original with {
address { city: "Natal", visits += 1 },
}
print(original.address.city) // expect: Recife
print(moved.address.city) // expect: Natal
print(moved.address.visits) // expect: 3
Consulta también