Repaso: canalización de datos
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 27 de 56.
Un desafío que procesa un pequeño conjunto de datos a través de una cadena de métodos Enumerable, de la misma forma en que escribirás Ruby en la vida real.
Desafío
IntermedioSe proporciona el array orders, cada elemento es un hash con :product, :qty y :price. Imprime tres líneas:
- Los ingresos totales de todos los pedidos (
qty * price, sumados). Usamap+reduce(:+), osum { ... }. - El número de pedidos con
qty >= 3(usacount). - El nombre del producto del pedido con los mayores ingresos (usa
max_by).
Para el array por defecto, la salida es:
59
2
milkPruébalo tú mismo
orders = [
{ product: "apple", qty: 4, price: 2 },
{ product: "bread", qty: 1, price: 3 },
{ product: "milk", qty: 6, price: 4 },
{ product: "cheese", qty: 2, price: 12 }
]
# TODO: ingresos totales, recuento de pedidos con cantidad >= 3, producto con mayores ingresos
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