Menu
Coddy logo textTech

Szukaj według tytułu

Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 30 z 56.

Dodaj opcję 2. Search By Title. Użytkownik wpisuje szukany termin, a program wyświetla każdą książkę, której tytuł zawiera ten termin, bez rozróżniania wielkości liter.

Właśnie tutaj przydaje się select z poprzedniego rozdziału — jeden blok, bez ręcznej pętli:

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

Wyzwanie

Łatwy

Rozszerz pętlę menu. Gdy wybór to "2":

  1. Użyj print, aby wyświetlić zachętę Search title: , i odczytaj zapytanie
  2. Użyj select, aby znaleźć książki, których tytuł (bez rozróżniania wielkości liter) zawiera zapytanie
  3. Jeśli nie ma żadnych dopasowań, wyświetl No matches.
  4. W przeciwnym razie wyświetl po jednym wierszu dla każdego dopasowania w formacie: <title> by <author>

Zachowaj działanie opcji 1 (Dodaj książkę) i 5 (Wyjście) z poprzednich lekcji.

Dla danych wejściowych 1, The Hobbit, Tolkien, Fantasy, 2, hobbit, a następnie 5, pasujący blok danych wyjściowych wygląda tak:

Choose an option: Search title: The Hobbit by Tolkien

Spróbuj swoich sił

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
  # TODO: obsłuż choice == "2", poproś o zapytanie, wybierz pasujące książki,
  # wyświetl "No matches." lub po jednym wierszu dla każdej pasującej książki: "<title> by <author>"
end
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Ruby online