Menu
CoddyTech

Funzionalità di ricerca

Fa parte della sezione Programmazione orientata agli oggetti del percorso GDScript di Coddy. Lezione 59 di 65.

challenge icon

Sfida

Medio

Aggiungi una ricerca per titolo. Mantieni tutto ciò che hai scritto nei passaggi precedenti; cambia solo library.gd.

Scrivi search_by_title(text: String) -> Array[Book] in Library. Restituisce ogni libro il cui titolo contiene text, nell'ordine di books:

  • La ricerca ignora le maiuscole e le minuscole: GREAT trova The Great Gatsby.
  • È sufficiente una parte del titolo: great trova anche Great Expectations.
  • Un text vuoto restituisce tutti i libri. Controlla prima questo caso: in GDScript "" in "Dune" è false.
  • I libri in prestito vengono trovati come qualsiasi altro libro.

Il codice fornito aggiunge il comando search TEXT, che stampa quanti libri sono stati trovati e una riga per ogni libro. Per questo input:

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

l'output è:

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

Il tuo codice va in book.gd, user.gd e library.gd. main.gd contiene il codice fornito per input/output e non può essere modificato.

Provalo tu

extends Node

func _ready():
	# Codice di input/output fornito: lascialo così com'è
	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()

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore GDScript online