Cari Berdasarkan Judul
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 30 dari 56.
Tambahkan opsi 2. Search By Title. Pengguna mengetik istilah pencarian, lalu program mencetak setiap buku yang judulnya memuat istilah tersebut tanpa membedakan huruf besar dan kecil.
Di sinilah select dari bab sebelumnya berguna, satu blok, tanpa perulangan manual:
matches = library.select do |book|
book[:title].downcase.include?(query.downcase)
endTantangan
MudahPerluas perulangan menu. Saat pilihannya "2":
printpromptSearch title:dan baca query- Gunakan
selectuntuk mencari buku yang judulnya (tanpa membedakan huruf besar dan kecil) menyertakan query - Jika tidak ada kecocokan, tampilkan
No matches. - Jika tidak, tampilkan satu baris untuk setiap kecocokan dengan format ini:
<title> by <author>
Pertahankan perilaku 1 (Tambah Buku) dan 5 (Keluar) dari pelajaran sebelumnya.
Untuk input 1, The Hobbit, Tolkien, Fantasy, 2, hobbit, lalu 5, blok output yang cocok terlihat seperti ini:
Choose an option: Search title: The Hobbit by TolkienCoba sendiri
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: tangani choice == "2", minta query, pilih buku yang cocok,
# tampilkan "No matches." atau satu baris untuk setiap buku yang cocok: "<title> by <author>"
end
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Ringkasan Method StringInterpolasi StringMenelusuri StringMemisahkan dan MenggabungkanRekap: Perangkai String4Block, Proc, dan Lambda
Apa Itu Block?do..end vs Kurung KurawalKata Kunci yieldParameter BlockProc dan LambdaRangkuman, Iterator Kustom5Andalan Enumerable
Select dan RejectMerangkai MapReduce / Injectcount, all?, any?, none?group_by dan partitionsort_by, min_by, max_byRekap: Alur Data8Pengambilan Keputusan Lanjutan
Case dengan class & regexwhen dengan Banyak NilaiOperator Ternaryif / unless SebarisUlasan, Pengklasifikasi Nilai3Array 2D
Dasar Array 2DMengakses Elemen Array 2DMenelusuri Array 2DPola Umum Array 2DRekap: Operasi Matriks6Proyek: Pengelola Perpustakaan
Ikhtisar ProyekTambahkan BukuLatihan sendiri: Compiler Ruby online