Pular para o conteúdo

05 · Controle de Fluxo

Condições com bindings

Condições separadas por vírgulas executam da esquerda para a direita, com curto-circuito. Bindings bem-sucedidos ficam disponíveis nas próximas condições e no corpo. Um guard que cria bindings precisa sair em todos os caminhos de falha.

Nesta página

Condições separadas por vírgulas executam da esquerda para a direita, com curto-circuito. Bindings bem-sucedidos ficam disponíveis nas próximas condições e no corpo. Um guard que cria bindings precisa sair em todos os caminhos de falha.

Exemplo completo

Condições com bindings.

23-condition-chains-and-guard.zolo
Playground
// Feature: lazy comma conditions and binding guards.

// Each pattern publishes its bindings only after matching successfully.

enum Entry { Value(int), Missing }

fn positive(entry: Entry) -> int {
    guard let .Value(value) = entry, value > 0 else { return 0 }
    return value
}

print(positive(Entry.Value(7)))
print(positive(Entry.Value(-1)))

let value = 99
if let .Value(value) = Entry.Value(3), value > 10 {
    print(value)
} else {
    // Failure sees the outer binding, including failure of a later filter.

    print(value)
}

fn next(index: int) -> int? {
    if index <= 3 { return index }
    return nil
}

let mut index = 1
while let item = next(index), item < 3 {
    print(item)
    index += 1
}
print(index)
// expected:

// 7

// 0

// 99

// 1

// 2

// 3

Regras e comportamento

Condições e recuperação de erros · Documentação

A partir de um checkout do repositório:

zolo examples/features/04-control-flow/23-condition-chains-and-guard.zolo

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br