Idiomas Ruby: safe navigation
Este curso explica como funciona o operador de navegação segura &. do Ruby. Ele compara cadeias de &. com cadeias de && e mostra que o &. avalia cada elo uma vez e devolve nil para a cadeia inteira quando qualquer elo é nil. Trata de argumentos, blocos e métodos de operador, e do que o . comum faz com nil. Combina o &. com || para valores padrão, mostra quando o &. esconde um bug e percorre linhas reais do código da própria app.
O que você vai aprender
- ✓Como cadeias de &. diferem de cadeias de && na avaliação e no curto-circuito
- ✓Usar o &. com argumentos, blocos e métodos de operador como >
- ✓Por que o . comum levanta NoMethodError em nil e que checagem o &. acrescenta
- ✓Combinar o &. com || para valores padrão, e a armadilha do false
- ✓Distinguir valores opcionais por natureza de um nil que indica bug
- ✓Ler usos reais do &. no código de uma aplicação
Recapitulando: a linha que você já viu
A aula "O operador AND", de Lógica: álgebra booleana, ensinou o && e o curto-circuito dele com este exemplo:
Ler a aula completa grátis →Currículo
7 aulasRecapitulando: a linha que você já viu
Compara cadeias de && e de &. e mostra que um nil em qualquer profundidade faz a cadeia inteira virar nil.
Safe navigation com argumentos e blocos
Mostra que o &. passa argumentos e blocos sem mudança e também funciona antes de métodos de operador como >.
O . simples ainda levanta erro
Mostra o . comum levantando NoMethodError em nil e explica o &. como uma única checagem de nil antes da chamada.
Combinando &. com || para valores padrão
Combina o &. com || para fornecer valores padrão e explica por que o || também troca um false legítimo.
Quando &. é a ferramenta errada
Separa valores opcionais por natureza de valores que nunca deveriam ser nil e mostra quando o &. esconde um bug.
Safe navigation no código desta app
Percorre usos reais do &. no código da app, incluindo uma chamada em que o .presence já lida com nil.
Juntando tudo sobre safe navigation
Resume o curso numa tabela com cadeias, argumentos, o . comum, valores padrão, bugs escondidos e exemplos reais.