Enumerable: find/any/all
O curso trata de any?, all? e none? chamados sem bloco, quando cada elemento é julgado pela própria truthiness. Também mostra a forma com argumento de padrão, do Ruby 2.5, que checa cada elemento com ===. Explica a verdade vazia, motivo de um array vazio devolver true para all? e false para any?. Um trace mostra o find parando no primeiro match, enquanto o select.first checa todos os elementos. Por fim vêm min_by e max_by, que devolvem o elemento com o maior ou o menor valor calculado pelo bloco.
O que você vai aprender
- ✓Como any?, all? e none? avaliam a truthiness quando chamados sem bloco
- ✓A forma com argumento de padrão do Ruby 2.5 e o uso de ===
- ✓Por que coleções vazias fazem all? dar true e any? dar false
- ✓Como um trace mostra o find parando no primeiro match
- ✓Por que o select.first checa todos os elementos e o find pode parar cedo
- ✓Uso de min_by e max_by, inclusive a forma com os n primeiros
any?, all?, none? sem bloco
A aula "Métodos relacionados do Enumerable", do curso do nível intern Enumerable Ruby: select, mostrou any?, all? e none? rodando com bloco: numbers.any? { |n| n > 4 }, numbers.all? { |n| n > 0 }, numbers.none? { |n| n > 10 }. Ela também cobriu count e find. Nada disso se repete aqui. Este curso…
Ler a aula completa grátis →Currículo
7 aulasany?, all?, none? sem bloco
Sem bloco, any?, all? e none? checam a truthiness de cada elemento, e só nil e false são falsy.
A forma de argumento-padrão (Ruby 2.5+)
Desde o Ruby 2.5, esses métodos aceitam um argumento checado com ===, servindo para classes, ranges e regexes.
Verdade vazia: quando coleções vazias surpreendem
Coleções vazias fazem all? e none? devolverem true e any? devolver false, e o código que chama deve tratar isso.
find para mesmo: uma prova com trace
Um puts dentro do bloco mostra o find checando quatro de dez elementos, enquanto o select.first checa os dez.
find vs select.first: a comparação real
Os dois devolvem o mesmo valor, mas o select monta a lista inteira antes, então o find trabalha menos.
min_by e max_by: novos parentes
min_by e max_by devolvem o elemento com o menor ou o maior valor do bloco, e nil em coleções vazias.
Juntando tudo: perguntas mais afiadas sobre coleções
Revisão das formas sem bloco e com padrão, da verdade vazia, do trace do find e do min_by, com um exercício.