Select y Reject
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 21 de 56.
El método select devuelve un nuevo array que contiene únicamente los elementos para los que el bloque devuelve un valor verdadero. Es la forma en que Ruby expresa «filtrar».
numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect # [2, 4, 6]reject es lo contrario: conserva todo aquello para lo que el bloque devuelve false:
odds = numbers.reject { |n| n.even? }
puts odds.inspect # [1, 3, 5]Ambos devuelven un nuevo array; el original no se modifica.
El bloque es simplemente un predicado; cualquier cosa que se evalúe como true o false funciona:
words = ["hi", "hello", "hey", "yo"]
long = words.select { |w| w.length >= 3 }
puts long.inspect # ["hello", "hey"]Desafío
PrincipianteLee una lista de enteros separados por comas. Imprime dos líneas:
- Los números mayores que
10(usaselect), unidos con, - Los números no divisibles por
3(usareject), unidos con,
Para la entrada 3,7,12,15,20, la salida es:
12, 15, 20
7, 20Pruébalo tú mismo
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: línea 1, numbers > 10, unidos con ", "
# TODO: línea 2, numbers NO divisibles por 3, unidos con ", "
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Cadenas en profundidad
Descripción general de los métodos de cadenasInterpolación de cadenasIteración sobre cadenasSeparar y unirRepaso: Tejedor de cadenas4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end frente a llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasRepaso: iterador personalizado7Hashes Parte 2
Hash.new con valores predeterminadosIteración de hashesHashes anidadosCombinación y transformaciónRepaso: contador de frecuencias10Proyecto - Registros de estudiantes
Descripción general del proyectoAgregar estudiante5Potencia Enumerable
Select y RejectEncadenamiento de MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byRepaso: canalización de datosPractica por tu cuenta: Compilador de Ruby online