07 · Casamento de Padrões
Defaults na desestruturação
Um padrão de campo como { retries = 3 } fornece um default para ausência opcional ou nil. Zero, false e strings vazias continuam sendo valores. O default só executa quando necessário.
Nesta página
Um padrão de campo como { retries = 3 } fornece um default para ausência opcional ou nil. Zero, false e strings vazias continuam sendo valores. O default só executa quando necessário.
Exemplo completo
Defaults na desestruturação.
06-destructure-defaults.zolo
struct Settings { timeout: int?, retries: int?, enabled: bool? }
let fallbacks = 0
fn default_timeout() -> int { fallbacks += 1; return 5 }
fn configure(settings: Settings) -> str {
let { timeout: wait = default_timeout(), retries = 3, enabled = true } = settings
assert(wait == 5)
assert(retries == 0)
assert(enabled == false)
"timeout={wait}, retries={retries}, enabled={enabled}"
}
print(configure(Settings { timeout: nil, retries: 0, enabled: false }))
assert(fallbacks == 1)
Referência
zolo run examples/features/40-syntax-fourth/06-destructure-defaults.zolo --no-cache
Veja também