07 · Casamento de Padrões
Preserve a cauda exata da tupla
Desestruture (status, ...payload) para reunir os elementos restantes da tupla. payload preserva o tipo e a ordem de cada elemento. O binding da cauda precisa ser o último e não transforma os elementos em um array homogêneo.
Nesta página
Desestruture (status, ...payload) para reunir os elementos restantes da tupla. payload preserva o tipo e a ordem de cada elemento. O binding da cauda precisa ser o último e não transforma os elementos em um array homogêneo.
Exemplo completo
Preserve a cauda exata da tupla.
20-tuple-rest.zolo
fn response() -> (int, str, bool) { return [200, "queued", true] }
fn describe(payload: (str, bool)) -> str = "{payload[0]}: {payload[1]}"
fn summarize(packet: (int, str, bool)) -> str {
let (status, ...payload) = packet
let (...whole) = packet
let (_, _, _, ...empty) = packet
assert(status == 200)
assert(payload[0] == "queued")
assert(payload[1] == true)
assert(whole[0] == 200)
assert(empty.len() == 0)
"{status}: {describe(payload)}"
}
print(summarize(response()))
Referência
zolo run examples/features/40-syntax-fourth/20-tuple-rest.zolo --no-cache
Veja também