Resumen - Iterador personalizado
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 20 de 56.
Construye tu propio método iterador que use yield, acepte un bloque y devuelva un valor útil, combinando todo lo de este capítulo.
Desafío
IntermedioDefine un método llamado each_even que reciba un array numbers y ceda (yield) cada número par del array a su bloque (omitiendo los números impares por completo).
Luego, lee una lista de enteros separados por comas, llama a each_even pasando dicha lista con un bloque que imprima "Even: <n>" por cada valor cedido, y finalmente imprime:
Done: <count>Donde count es la cantidad de números pares que fueron cedidos.
Para la entrada 1,2,3,4,5,6, la salida es:
Even: 2
Even: 4
Even: 6
Done: 3Pruébalo tú mismo
# TODO: define each_even(numbers) que produzca cada número par
numbers = gets.chomp.split(",").map(&:to_i)
count = 0
# TODO: llama a each_even con un bloque que imprima "Even: <n>"
# e incremente count por cada valor producido
puts "Done: #{count}"
Todas las lecciones de Lógica y flujo
1Strings en profundidad
Visión general de los métodos de StringInterpolación de StringsIterar sobre StringsSplit y JoinRepaso - String Weaver4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end vs llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasResumen - Iterador personalizado7Hashes Parte 2
Hash.new con valores por defectoIteración de HashesHashes anidadosFusión y transformaciónResumen - Contador de frecuencia10Proyecto - Registros de Estudiantes
Descripción general del proyectoAgregar estudiante5Potencia de Enumerable
Select y RejectEncadenando MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byResumen - Data Pipeline