Bestandsübersicht
Teil des Abschnitts Logik und Ablauf der Ruby-Journey von Coddy. Lektion 55 von 56.
Ein Inventarbericht, der Hashes, Enumerable-Ketten, group_by und ein wenig Formatierung verwendet.
Aufgabe
MittelDas Array inventory ist vorgegeben. Jedes Element ist ein Hash mit :name, :category, :qty und :price.
Geben Sie vier Zeilen aus:
- Der gesamte Inventarwert über alle Artikel hinweg (
qty * price, summiert), ausgegeben als Ganzzahl. - Die Kategorie mit der höchsten Anzahl an Artikeln im Format
Top category: <name> (<count>). Bei Gleichstand entscheidet die alphabetische Reihenfolge des Kategorienamens. - Namen der Artikel, die nicht vorrätig sind (
qty == 0), alphabetisch sortiert und mit,verbunden. Falls keine vorhanden sind, geben Sie(none)aus. - Namen der Top 3 der teuersten Artikel nach Einzelpreis, der höchste zuerst, verbunden mit
,. Bei Gleichstand entscheidet der Name alphabetisch.
Für das Standard-Inventar lautet die Ausgabe:
232
Top category: food (3)
milk
chair, lamp, milkProbier es selbst
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: Gesamtwert, Top-Kategorie, Namen der nicht vorrätigen Artikel und Top 3 nach Preis ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik und Ablauf
1Strings im Detail
Überblick über String-MethodenString-InterpolationStrings durchlaufenSplitten und VerbindenRückblick – String Weaver4Blocks, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas Schlüsselwort yieldBlock-ParameterProcs und LambdasRückblick – Benutzerdefinierter Iterator2Bereiche
Was ist ein Bereich?BereichsmethodenBereiche in Case / WhenWiederholung – Übung zu Bereichen5Das Enumerable-Kraftpaket
Select und RejectMap verkettenReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Datenpipeline8Fortgeschrittene Entscheidungsfindung
Case mit Klassen & Regexwhen mit mehreren WertenTernärer OperatorInline-if / unlessRückblick – NotenklassifiziererÜbe selbstständig: Online-Ruby-Compiler