07 · Casamento de Padrões
Compare com um valor existente
Um padrão ^request_id compara com o binding request_id do escopo externo. Ele não cria um novo binding nem pode usar um nome introduzido pelo mesmo padrão. Os valores comparados precisam ter tipos compatíveis.
Nesta página
Um padrão ^request_id compara com o binding request_id do escopo externo. Ele não cria um novo binding nem pode usar um nome introduzido pelo mesmo padrão. Os valores comparados precisam ter tipos compatíveis.
Exemplo completo
Compare com um valor existente.
08-pin-patterns.zolo
struct Reply { request_id: int, data: str }
let request_id = 42
let reply = Reply { request_id: 42, data: "accepted" }
let other = Reply { request_id: 99, data: "stale" }
let accepted = match reply {
{ request_id: ^request_id, data, .. } => data,
_ => "ignored"
}
let ignored = match other {
{ request_id: ^request_id, data, .. } => data,
_ => "ignored"
}
assert(accepted == "accepted")
assert(ignored == "ignored")
assert(request_id == 42)
print(accepted)
print(ignored)
Referência
zolo run examples/features/40-syntax-fourth/08-pin-patterns.zolo --no-cache
Veja também