Menu
Coddy logo textTech

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)
end
challenge icon

Görev

Kolay

Menü döngüsünü genişletin. Seçim "2" olduğunda:

  1. Search title: istemini print ile yazdırın ve sorguyu okuyun
  2. Başlığı (büyük/küçük harf duyarsız) sorguyu içeren kitapları bulmak için select kullanın
  3. Eğer eşleşme yoksa, No matches. yazdırın
  4. Aksi takdirde, her eşleşme için şu formatta bir satır yazdırın: <title> by <author>

Önceki derslerdeki 1 (Add Book) ve 5 (Exit) davranışlarını koruyun.

1, The Hobbit, Tolkien, Fantasy, 2, hobbit ve ardından 5 girişleri için, eşleşen çıktı bloğu şu şekilde görünür:

Choose an option: Search title: The Hobbit by Tolkien

Kopya kağıdı

Büyük/küçük harf duyarsız başlık araması için select yöntemini downcase.include? ile birlikte kullanın:

matches = library.select do |book|
  book[:title].downcase.include?(query.downcase)
end

Sonuçları veya bir yedek mesajı yazdırın:

if matches.empty?
  puts "No matches."
else
  matches.each { |book| puts "#{book[:title]} by #{book[:author]}" }
end

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!"
  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
quiz iconKendini test et

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