Envanter Anlık Görünümü
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 55 / 56.
Hash'leri, Enumerable zincirlerini, group_by metodunu ve biraz biçimlendirmeyi kullanan bir envanter raporu.
Görev
Ortainventory dizisi verilmiştir. Her öğe :name, :category, :qty ve :price anahtarlarını içeren bir hash yapısıdır.
Dört satır yazdırın:
- Tüm öğelerdeki toplam envanter değeri (
qty * pricetoplamı), tam sayı olarak yazdırılmalıdır. - En fazla öğe sayısına sahip kategori,
Top category: <name> (<count>)formatında yazdırılmalıdır. Eşitlik durumunda kategori adına göre alfabetik olarak öncelik verilir. - Stokta kalmayan (
qty == 0) öğelerin adları, alfabetik olarak sıralanmış ve,ile birleştirilmiş şekilde yazdırılmalıdır. Eğer hiç yoksa,(none)yazdırın. - Birim fiyatına göre en pahalı ilk 3 öğenin adı, en yüksekten başlayarak
,ile birleştirilmiş şekilde yazdırılmalıdır. Eşitlik durumunda isme göre alfabetik olarak sıralanmalıdır.
Varsayılan envanter için çıktı şöyledir:
232
Top category: food (3)
milk
chair, lamp, milkKendin dene
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: toplam değeri, en popüler kategoriyi, stokta olmayan isimleri ve fiyata göre ilk 3'ü yazdır
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri HattıKendi başına pratik yap: Online Ruby derleyicisi