Récapitulatif - Pipeline de données
Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 27 sur 56.
Un défi qui fait passer un petit ensemble de données à travers une chaîne de méthodes Enumerable, de la même manière que vous écrirez du Ruby en situation réelle.
Défi
MoyenLe tableau orders est fourni, chaque élément est un hash avec :product, :qty, et :price. Affichez trois lignes :
- Le revenu total de toutes les commandes (
qty * price, additionnés). Utilisezmap+reduce(:+), ousum { ... }. - Le nombre de commandes avec
qty >= 3(utilisezcount). - Le nom du produit de la commande ayant le revenu le plus élevé (utilisez
max_by).
Pour le tableau par défaut, la sortie est :
59
2
milkEssayez vous-même
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 : revenu total, nombre de commandes avec une quantité >= 3, produit ayant le revenu le plus élevé
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - Tisseur de chaînes4Blocs, Procs et Lambdas
Qu'est-ce qu'un bloc ?do..end ou accoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes, 2e partie
Hash.new avec valeurs par défautParcourir les hashesHashes imbriquésFusionner et transformerRécapitulatif - Compteur de fréquences10Projet - Dossiers des étudiants
Présentation du projetAjouter un étudiant2Plages
Qu’est-ce qu’une plage ?Méthodes des plagesPlages dans Case / WhenRécapitulatif - Exercices sur les plages5Puissance des Enumerable
Select et RejectChaînage de MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Pipeline de donnéesEntraînez-vous par vous-même : Compilateur Ruby en ligne