Başlığa Göre Ara
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 30 / 56.
2. Search By Title seçeneğini ekleyin. Kullanıcı bir arama terimi yazar ve program, başlığı bu terimi içeren her kitabı büyük/küçük harf duyarsız olarak yazdırır.
İşte önceki bölümdeki select yönteminin karşılığını verdiği yer; tek bir blok, manuel döngü yok:
matches = library.select do |book|
book[:title].downcase.include?(query.downcase)
endGörev
KolayMenü döngüsünü genişletin. Seçim "2" olduğunda:
printileSearch title:istemini yazdırın ve sorguyu okuyun- Başlığı (büyük/küçük harfe duyarsız olarak) sorguyu içeren kitapları bulmak için
selectkullanın - Eşleşme yoksa
No matches.yazdırın - Aksi takdirde her eşleşme için şu biçimde bir satır yazdırın:
<title> by <author>
Önceki derslerdeki 1 (Kitap Ekle) ve 5 (Çıkış) davranışlarını koruyun.
1, The Hobbit, Tolkien, Fantasy, 2, hobbit ve ardından 5 girdileri için eşleşen çıktı bloğu şöyle görünür:
Choose an option: Search title: The Hobbit by TolkienKendin 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!"
end
# YAPILACAK: choice == "2" durumunu işle, sorgu iste, eşleşen kitapları seç,
# "Eşleşme bulunamadı." veya her eşleşme için bir satır yazdır: "<title> by <author>"
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
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ı32B Diziler
2B Dizi Temelleri2B Elemanlara Erişim2B Diziler Üzerinde YinelemeYaygın 2B ÖrüntülerTekrar - Matris İşlemleri6Proje - Kütüphane Yöneticisi
Projeye Genel BakışKitap EkleKendi başına pratik yap: Online Ruby derleyicisi