Pular para o conteúdo

09 · Estruturas de Dados

Atualizações imutáveis calculadas

Uma atualização with aceita operadores compostos como value += 1. Ela lê o campo antigo uma vez e calcula a substituição sem alterar o original. Restrições de visibilidade, tipos, caminhos conflitantes e cópias lineares continuam valendo.

Nesta página

Uma atualização with aceita operadores compostos como value += 1. Ela lê o campo antigo uma vez e calcula a substituição sem alterar o original. Restrições de visibilidade, tipos, caminhos conflitantes e cópias lineares continuam valendo.

Exemplo completo

Atualizações imutáveis calculadas.

computed_record_updates.zolo
Playground
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

Regras e comportamento

Records, maps e atualizações · Documentação

A partir de um checkout do repositório:

zolo examples/features/computed_record_updates.zolo

Agrupando atualizações pelo caminho

Agrupe as mudanças sob o caminho comum para evitar repeti-lo. Atualizações compostas e verificações de campos mantêm as mesmas regras.

08-grouped-updates.zolo
Playground
// 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

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br