Menu
CoddyTech

Fitur Pencarian

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 59 dari 65.

challenge icon

Tantangan

Sedang

Tambahkan pencarian judul. Pertahankan semua yang kamu tulis pada langkah sebelumnya; hanya library.gd yang berubah.

Tulis search_by_title(text: String) -> Array[Book] di Library. Fungsi ini mengembalikan setiap buku yang judulnya berisi text, sesuai urutan books:

  • Pencarian mengabaikan huruf besar dan kecil: GREAT menemukan The Great Gatsby.
  • Sebagian judul saja sudah cukup: great juga menemukan Great Expectations.
  • text yang kosong mengembalikan setiap buku. Periksa kasus ini terlebih dahulu: di GDScript, "" in "Dune" bernilai false.
  • Buku yang sedang dipinjam ditemukan sama seperti buku lainnya.

Kode yang disediakan menambahkan perintah search TEXT, yang mencetak jumlah buku yang ditemukan dan satu baris untuk setiap buku. Untuk input ini:

Community
book The Great Gatsby|F. Scott Fitzgerald|123456
book To Kill a Mockingbird|Harper Lee|789012
book Great Expectations|Charles Dickens|345678
search great
search zzz

output-nya adalah:

Results for 'great': 2
- The Great Gatsby by F. Scott Fitzgerald
- Great Expectations by Charles Dickens
Results for 'zzz': 0

Kodemu ditulis di book.gd, user.gd, dan library.gd. main.gd berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

extends Node

func _ready():
	# Kode input/output yang disediakan: biarkan apa adanya
	var library := Library.new(OS.read_string_from_stdin())
	var line := OS.read_string_from_stdin()
	while line != "":
		var parts := line.split(" ", true, 1)
		var fields: PackedStringArray = parts[1].split("|") if parts.size() > 1 else PackedStringArray()
		match parts[0]:
			"book":
				library.add_book(Book.new(fields[0], fields[1], fields[2]))
			"user":
				library.add_user(User.new(fields[0], fields[1]))
			"borrow":
				print(library.borrow_book(fields[0], fields[1]))
			"search":
				var term: String = parts[1] if parts.size() > 1 else ""
				var found: Array = library.search_by_title(term)
				print("Results for '%s': %d" % [term, found.size()])
				for book in found:
					print("- ", book.title, " by ", book.author)
			"loans":
				var reader: User = library.find_user(fields[0])
				print(reader.user_name, " has borrowed:")
				for isbn in reader.borrowed_isbns:
					print("- ", library.find_book(isbn).title)
			"holder":
				var book: Book = library.find_book(fields[0])
				if book.available:
					print(book.title, " is on the shelf")
				else:
					print(book.title, " is borrowed by ", library.find_user(book.borrower_id).user_name)
			"books":
				for book in library.books:
					print(book)
			"users":
				for user in library.users:
					print(user)
			"show":
				print(library)
		line = OS.read_string_from_stdin()

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler GDScript online