Türe Göre Filtrele
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 31 / 56.
3. Filter By Genre seçeneğini ekleyin. Kullanıcı bir tür yazar ve program, bu sefer büyük/küçük harf duyarlı bir eşleşme ile o türdeki her kitabı listeler.
Ayrıca önceki bölümdeki count öğesini kullanarak bir sayım bildireceksiniz.
Görev
KolayMenü döngüsünü genişletin. Seçim "3" olduğunda:
Genre:isteminiprintile yazdırın ve girdiyi okuyun:genredeğeri girdiye tam olarak eşit olan kitaplarıselectile seçin- Her eşleşme için bir satır yazdırın:
<title> by <author> - Listenin ardından,
neşleşme sayısı olacak şekildeTotal: <n>yazdırın (countveyamatches.lengthkullanın)
Önceki tüm dalları olduğu gibi bırakın.
İki Fantasy kitabı ve bir Sci-Fi kitabı ekleyen, ardından Fantasy ile filtreleme yapıp çıkan girdiler için, filtreleme bloğu her iki fantasy kitabını ve Total: 2 ifadesini yazdırmalıdır.
Kendin dene
library = []
loop do
puts "--- Library Manager ---"
puts "1. Add Book"
puts "2. Search By Title"
puts "3. Filter By Genre"
puts "4. Mark As Read"
puts "5. Exit"
print "Choose an option: "
choice = gets.chomp
if choice == "5"
puts "Goodbye!"
break
elsif choice == "1"
print "Title: "
title = gets.chomp
print "Author: "
author = gets.chomp
print "Genre: "
genre = gets.chomp
library.push({ title: title, author: author, genre: genre, read: false })
puts "Book added!"
elsif choice == "2"
print "Search title: "
query = gets.chomp
matches = library.select { |b| b[:title].downcase.include?(query.downcase) }
if matches.empty?
puts "No matches."
else
matches.each { |b| puts "#{b[:title]} by #{b[:author]}" }
end
end
# YAPILACAK: choice == "3" durumunu işle, tür için girdi iste,
# eşleşen kitapları seç, her birini yazdır, ardından "Toplam: <n>" yazdır
end
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
1Derinlemesine Stringler
String Metotlarına Genel BakışString InterpolationStringler Üzerinde GezinmeSplit ve JoinÖzet - String Weaver4Bloklar, Procs ve Lambdalar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar KelimesiBlok ParametreleriProcs ve LambdalarÖzet - Özel İteratör7Hashes Bölüm 2
Varsayılan Değerlerle Hash.newHash Yapıları Üzerinde Yinelemeİç İçe Hash YapılarıBirleştirme ve DönüştürmeÖzet - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Select ve RejectMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byÖzet - Data Pipeline8İleri Seviye Karar Yapıları
Sınıflar ve Regex ile CaseÇok Değerli whenTernary OperatörüSatır İçi if / unlessÖzet - Not Sınıflandırıcı32D Diziler
2D Dizi Temelleri2D Elemanlara Erişim2D Diziler Üzerinde YinelemeYaygın 2D KalıplarÖzet - Matris İşlemleri6Proje - Kütüphane Yöneticisi
Projeye Genel BakışKitap Ekle