Recapitulação - Iterador Customizado
Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 20 de 56.
Construa seu próprio método iterador que utiliza yield, aceita um bloco e retorna um valor útil, combinando tudo deste capítulo.
Desafio
MédioDefina um método chamado each_even que recebe um array numbers e faz o yield de cada número par no array para o seu bloco (pulando números ímpares inteiramente).
Em seguida, leia uma lista de inteiros separados por vírgula, chame each_even nela com um bloco que imprime "Even: <n>" para cada valor retornado e, finalmente, imprima:
Done: <count>Onde count é a quantidade de números pares que foram retornados.
Para a entrada 1,2,3,4,5,6, a saída é:
Even: 2
Even: 4
Even: 6
Done: 3Experimente você mesmo
# TODO: defina each_even(numbers) que produz cada número par
numbers = gets.chomp.split(",").map(&:to_i)
count = 0
# TODO: chame each_even com um bloco que imprime "Even: <n>"
# e incrementa count para cada valor produzido
puts "Done: #{count}"
Todas as lições de Lógica e Fluxo
1Strings a Fundo
Visão Geral de Métodos de StringInterpolação de StringsIterando sobre StringsSplit e JoinRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA palavra-chave yieldParâmetros de BlocoProcs e LambdasRecapitulação - Iterador Customizado7Hashes Parte 2
Hash.new com Valores PadrãoIterando em HashesHashes AninhadosMesclando e TransformandoRecapitulação - Contador de Frequência10Projeto - Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno2Intervalos
O que é um Intervalo?Métodos de IntervaloIntervalos em Case / WhenRecapitulação - Prática com Intervalos5O Poder do Enumerable
Select e RejectEncadeando o MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Data Pipeline