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)
endWyzwanie
ŁatwyRozszerz pętlę menu. Gdy wybór to "2":
- Użyj
print, aby wyświetlić zachętęSearch title:, i odczytaj zapytanie - Użyj
select, aby znaleźć książki, których tytuł (bez rozróżniania wielkości liter) zawiera zapytanie - Jeśli nie ma żadnych dopasowań, wyświetl
No matches. - 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 TolkienSpró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
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
1Łańcuchy znaków w szczegółach
Przegląd metod łańcuchów znakówInterpolacja łańcuchów znakówIterowanie po łańcuchach znakówDzielenie i łączeniePowtórka – Tkacz łańcuchów znaków4Bloki, procki i lambdy
Czym jest blok?do..end a nawiasy klamroweSłowo kluczowe yieldParametry blokuProcki i lambdyPodsumowanie — własny iterator7Hashe, część 2
Hash.new z wartościami domyślnymiIterowanie po haszachZagnieżdżone haszeŁączenie i przekształcaniePowtórka — licznik częstotliwości10Projekt – ewidencja uczniów
Przegląd projektuDodawanie ucznia5Potęga Enumerable
Select i RejectŁączenie wywołań mapReduce / Injectcount, all?, any?, none?group_by i partitionsort_by, min_by, max_byPodsumowanie — potok danych8Zaawansowane podejmowanie decyzji
case z klasami i wyrażeniami regularnymiwhen z wieloma wartościamiOperator trójargumentowyInline if / unlessPowtórka – klasyfikator ocen3Tablice 2D
Podstawy tablic 2DDostęp do elementów tablic 2DIterowanie po tablicach 2DTypowe wzorce 2DPowtórzenie – operacje na macierzach6Projekt – Menedżer biblioteki
Przegląd projektuDodaj książkęPoćwicz samodzielnie: Kompilator Ruby online