Resumen del inventario
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 55 de 56.
Un informe de inventario que pone en práctica hashes, cadenas de Enumerable, group_by y un toque de formato.
Desafío
IntermedioSe proporciona el array inventory. Cada elemento es un hash con :name, :category, :qty y :price.
Imprime cuatro líneas:
- El valor total del inventario de todos los elementos (
qty * price, sumado), impreso como un entero. - La categoría con el mayor número de elementos, con el formato
Top category: <name> (<count>). En caso de empate, se desempata alfabéticamente por nombre de categoría. - Los nombres de los elementos sin existencias (
qty == 0), ordenados alfabéticamente y unidos con,. Si no hay ninguno, imprime(none). - Los nombres de los 3 elementos más caros según el precio por unidad, del más caro al más barato y unidos con
,. En caso de empate, se desempata alfabéticamente por nombre.
Para el inventario predeterminado, la salida es:
232
Top category: food (3)
milk
chair, lamp, milkPruébalo tú mismo
inventory = [
{ name: "apple", category: "food", qty: 10, price: 2 },
{ name: "bread", category: "food", qty: 4, price: 3 },
{ name: "milk", category: "food", qty: 0, price: 4 },
{ name: "chair", category: "furniture", qty: 2, price: 35 },
{ name: "lamp", category: "furniture", qty: 5, price: 20 },
{ name: "pencil", category: "stationery", qty: 30, price: 1 }
]
# TODO: print total value, top category, out-of-stock names, top 3 by price
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