Cercare per titolo
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 30 di 56.
Aggiungi l'opzione 2. Search By Title. L'utente digita un termine di ricerca e il programma stampa tutti i libri il cui titolo contiene quel termine, senza distinzione tra maiuscole e minuscole.
È qui che select del capitolo precedente dà i suoi frutti: un blocco, nessun ciclo manuale:
matches = library.select do |book|
book[:title].downcase.include?(query.downcase)
endSfida
FacileEstendi il ciclo del menu. Quando la scelta è "2":
- usa
printper mostrare il promptSearch title:e leggi la query - Usa
selectper trovare i libri il cui titolo (senza distinzione tra maiuscole e minuscole) include la query - Se non ci sono corrispondenze, stampa
No matches. - Altrimenti stampa una riga per ogni corrispondenza in questo formato:
<title> by <author>
Mantieni i comportamenti di 1 (Add Book) e 5 (Exit) delle lezioni precedenti.
Per gli input 1, The Hobbit, Tolkien, Fantasy, 2, hobbit, poi 5, il blocco corrispondente dell'output è simile a:
Choose an option: Search title: The Hobbit by TolkienProvalo tu
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: maneja choice == "2", solicita una consulta y selecciona los libros que coincidan,
# imprime "No matches." o una línea por cada coincidencia: "<title> by <author>"
end
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di dati3Array bidimensionali
Basi degli array 2DAccesso agli elementi 2DIterare sugli array 2DPattern comuni con array 2DRiepilogo - Operazioni sulle matrici6Progetto - Gestore della biblioteca
Panoramica del progettoAggiungere un libroEsercitati da solo: Compilatore Ruby online