الكلمة المفتاحية self
جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 4 من 65.
تعمل الدالة المُعلنة داخل صنف على كائن معيّن: وهو الكائن الذي يسبق النقطة في الاستدعاء. داخل الدالة، تشير الكلمة المفتاحية self إلى ذلك الكائن.
# car.gd
class_name Car
extends RefCounted
var color: String = "Red"
var model: String = "Sedan"
func describe() -> void:
print("I am a %s %s" % [self.color, self.model])تُشغّل my_car.describe() الدالة describe() مع ضبط self على my_car، لذا تقرأ الدالة متغيرات تلك السيارة. لا تمرّر self بنفسك:
var my_car := Car.new()
var taxi := Car.new()
taxi.color = "Yellow"
my_car.describe() # أنا سيارة سيدان حمراء
taxi.describe() # أنا سيارة سيدان صفراءكتابة self. اختيارية. داخل دالة في فئة، تعني color وحدها بالفعل color للكائن، لذا فإن print("I am a %s %s" % [color, model]) تفعل الشيء نفسه.
تحتاج إلى self عندما يكون للمعامل الاسم نفسه الذي يحمله متغير في الصنف. داخل الدالة، يشير الاسم إلى المعامل، بينما يختار self. متغير الكائن:
func repaint(color: String) -> void:
self.color = colorمن دون self.، ينسخ السطر color = color المعامل إلى نفسه، وتحتفظ السيارة بلونها القديم.
التحدي
سهلأكمل دالتي الصنف Car في car.gd:
- تخزّن
set_info(year, make, model)معاملاتها الثلاثة في متغيرات السيارة التي تحمل الأسماء نفسها - تعيد
describe()القيمةThis car is a YEAR MAKE MODEL، على سبيل المثالThis car is a 2020 Toyota Corolla
يقرأ الكود المرفق عدد السيارات التي تليه، ثم سطرًا لكل سيارة (year make model). ينشئ سيارة لكل سطر، ويستدعي set_info()، ويطبع describe() لكل سيارة. بالنسبة إلى السطر 2020 Toyota Corolla، يطبع:
This car is a 2020 Toyota Corollaضع الكود في car.gd. يحتوي main.gd على كود الإدخال/الإخراج المرفق، ولا يمكن تعديله.
جرّب بنفسك
extends Node
func _ready():
# كود الإدخال/الإخراج الموفَّر: اتركه كما هو
var count := int(OS.read_string_from_stdin())
var cars: Array[Car] = []
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
var car := Car.new()
car.set_info(int(parts[0]), parts[1], parts[2])
cars.append(car)
for car in cars:
print(car.describe())
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجّه
1أساسيات البرمجة كائنية التوجه
الملفات الخارجيةمقدمة إلى البرمجة كائنية التوجهالفئات مقابل الكائناتالكلمة المفتاحية selfالأساليبالخصائصالمُنشئ (_init)مراجعة - آلة حاسبة بسيطة4تعدد الأشكال
إعادة النظر في تجاوز الأساليبكتابة الأنواع بأسلوب البطةالفئات والأساليب المجرّدةتصميم الواجهاتمراجعة - حاسبة الأشكال10أنماط التصميم، الجزء الثاني
نمط الأوامرنمط المحوّلنمط المُزيّننمط الطريقة القالبيةنمط الحالةالنمط المركّب2خصائص الأصناف
متغيرات الكائن مقابل المتغيرات الساكنةالدوال الساكنةمُعيِّنات الخصائصمُسترجِعات الخصائصخاص وفقًا للاتفاقيةمراجعة - مدير الحسابات البنكية5التغليف
الأعضاء العامة والخاصةالتحقق من الصحة باستخدام دوال الضبطإخفاء المعلوماتالخصائص للقراءة فقطمراجعة - نظام سجلات الطلاب8مفاهيم متقدمة في البرمجة كائنية التوجه
التركيب مقابل الوراثةالأصناف الداخليةالعُقد كمكوّناتRefCounted مقابل Nodeالتعدادات في الأصنافتدرّب بنفسك: مترجم GDScript عبر الإنترنت