按书名搜索
本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 30 课,共 56 课。
添加 2. Search By Title 选项。用户输入搜索词,程序会打印出所有标题中包含该词的图书,且不区分大小写。
上一章介绍的 select 就在这里派上用场了,只需一个代码块,无需手动编写循环:
matches = library.select do |book|
book[:title].downcase.include?(query.downcase)
end挑战
简单扩展菜单循环。当选择为 "2" 时:
- 使用
print显示提示Search title:,并读取查询 - 使用
select查找标题(不区分大小写)包含该查询的书籍 - 如果没有匹配项,输出
No matches. - 否则,每个匹配项输出一行,格式如下:
<title> by <author>
保留前几课中 1(添加书籍)和 5(退出)的行为。
对于输入 1、The Hobbit、Tolkien、Fantasy、2、hobbit,然后输入 5,匹配项对应的输出部分如下:
Choose an option: Search title: The Hobbit by Tolkien亲手试试
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:处理 choice == "2",提示输入查询内容,筛选匹配的书籍,
# 输出 "No matches.",或为每本匹配的书籍输出一行:"<title> by <author>"
end
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Ruby 在线编译器