Menu
CoddyTech

Filtrar por Gênero

Parte da seção Lógica e fluxo do Journey de Ruby da Coddy. Lição 31 de 56.

Adicione a opção 3. Filter By Genre. O usuário digita um gênero e o programa lista todos os livros nesse gênero exato, com correspondência case-sensitive desta vez.

Você também relatará uma contagem, usando count do capítulo anterior.

challenge icon

Desafio

Fácil

Estenda o loop do menu. Quando a escolha for "3":

  1. print a solicitação Genre: e leia-a
  2. select os livros cujo :genre seja exatamente igual à entrada
  3. Imprima uma linha por correspondência: <title> by <author>
  4. Após a lista, imprima Total: <n> onde n é a contagem de correspondências (use count ou matches.length)

Mantenha todos os ramos anteriores intactos.

Para entradas que adicionam dois livros de Fantasy e um livro de Sci-Fi, depois filtram por Fantasy e saem, o bloco de filtro deve imprimir ambos os livros de fantasia e Total: 2.

Experimente você mesmo

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!"
  elsif choice == "2"
    print "Search title: "
    query = gets.chomp
    matches = library.select { |b| b[:title].downcase.include?(query.downcase) }
    if matches.empty?
      puts "No matches."
    else
      matches.each { |b| puts "#{b[:title]} by #{b[:author]}" }
    end
  end
  # TODO: tratar choice == "3", solicitar o gênero,
  # selecionar livros correspondentes, imprimir cada um, depois "Total: <n>"
end
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de Ruby online