وظيفة البحث
جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 59 من 65.
التحدي
متوسطأضف بحثًا عن العناوين. احتفظ بكل ما كتبته في الخطوات السابقة؛ التغيير الوحيد يكون في library.gd.
اكتب search_by_title(text: String) -> Array[Book] في Library. تُعيد كل كتاب يحتوي عنوانه على text، بترتيب books:
- يتجاهل البحث حالة الأحرف الكبيرة والصغيرة:
GREATيعثر علىThe Great Gatsby. - يكفي وجود جزء من العنوان:
greatيعثر أيضًا علىGreat Expectations. - إذا كانت
textفارغة، تُعاد كل الكتب. تحقّق من هذه الحالة أولًا: في GDScript،"" in "Dune"هيfalse. - يُعثر على الكتب المُعارة مثل أي كتاب آخر.
يضيف الكود المزوّد الأمر search TEXT، الذي يطبع عدد الكتب التي عُثر عليها وسطرًا واحدًا لكل كتاب. لهذا الإدخال:
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يكون الناتج:
Results for 'great': 2
- The Great Gatsby by F. Scott Fitzgerald
- Great Expectations by Charles Dickens
Results for 'zzz': 0ضع شيفرتك في book.gd وuser.gd وlibrary.gd. يحتوي main.gd على شيفرة الإدخال والإخراج المزوّدة، ولا يمكن تعديله.
جرّب بنفسك
extends Node
func _ready():
# كود الإدخال/الإخراج المُقدَّم: اتركه كما هو
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()
جميع دروس البرمجة كائنية التوجّه
1أساسيات البرمجة كائنية التوجه
الملفات الخارجيةمقدمة إلى البرمجة كائنية التوجهالفئات مقابل الكائناتالكلمة المفتاحية selfالأساليبالخصائصالمُنشئ (_init)مراجعة - آلة حاسبة بسيطة4تعدد الأشكال
إعادة النظر في تجاوز الأساليبكتابة الأنواع بأسلوب البطةالفئات والأساليب المجرّدةتصميم الواجهاتمراجعة - حاسبة الأشكال10أنماط التصميم، الجزء الثاني
نمط الأوامرنمط المحوّلنمط المُزيّننمط الطريقة القالبيةنمط الحالةالنمط المركّب2خصائص الأصناف
متغيرات الكائن مقابل المتغيرات الساكنةالدوال الساكنةمُعيِّنات الخصائصمُسترجِعات الخصائصخاص وفقًا للاتفاقيةمراجعة - مدير الحسابات البنكية5التغليف
الأعضاء العامة والخاصةالتحقق من الصحة باستخدام دوال الضبطإخفاء المعلوماتالخصائص للقراءة فقطمراجعة - نظام سجلات الطلاب8مفاهيم متقدمة في البرمجة كائنية التوجه
التركيب مقابل الوراثةالأصناف الداخليةالعُقد كمكوّناتRefCounted مقابل Nodeالتعدادات في الأصناف11المشروع: إدارة المكتبة
نظرة عامة على المشروعفئتا الكتب والمستخدمينتدرّب بنفسك: مترجم GDScript عبر الإنترنت