الأساليب وself
جزء من قسم البرمجة كائنية التوجه في رحلة Swift على Coddy. الدرس 3 من 57.
داخل إحدى الطرق، تمثّل self النسخة التي استُدعيت الطريقة عليها. يشير كلٌّ من self.count وcount إلى الخاصية نفسها، لذلك عادةً ما يُحذف self:
class Counter {
var count = 0
func increment() {
self.count += 1
}
}
let c = Counter()
c.increment()
print(c.count)الناتج:
1تُستخدم self عندما يكون للمعامل الاسم نفسه الذي تملكه خاصية. عندئذٍ يشير الاسم المجرّد إلى المعامل، بينما تشير self.name إلى الخاصية:
class Player {
var name = "unknown"
func rename(name: String) {
self.name = name
}
}
let p = Player()
p.rename(name: "Ada")
print(p.name)الناتج:
Adaيمكن للطرائق استدعاء طرائق أخرى للمثيل نفسه، مما يحافظ على صغر حجم كل طريقة:
class Cart {
var total = 0
func add(_ price: Int) {
total += price
}
func addTwice(_ price: Int) {
add(price)
add(price)
}
}
let cart = Cart()
cart.addTwice(5)
print(cart.total)الناتج:
10يمكن للطريقة أيضًا إرجاع قيمة محسوبة من الخصائص. هنا تجيب isEmpty() عن سؤال يتعلق بالمثيل من دون تغييره:
class Cart {
var items: [String] = []
func add(_ item: String) {
items.append(item)
}
func isEmpty() -> Bool {
items.count == 0
}
}
let cart = Cart()
print(cart.isEmpty())
cart.add("tea")
print(cart.isEmpty())الناتج:
true
falseالتحدي
سهلأكمل الصنف Thermostat. تخزّن setTarget(target:) المعامل في الخاصية target (استخدم self)، وتزيد warmer() الهدف بمقدار 1، وتُرجع display() القيمة target: 21.
يقرأ الكود المزوّد هدفًا ابتدائيًا وقائمة من الأوامر (warmer أو set <n>)، ثم يطبّقها ويطبع display() في النهاية.
ضع كودك في Thermostat.swift. يحتوي main.swift على كود الإدخال/الإخراج المزوّد، ولا يمكن تعديله.
جرّب بنفسك
// كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
var input: [String] = []
while let line = readLine() { input.append(line) }
let t = Thermostat()
t.setTarget(target: Int(input[0])!)
for cmd in input.dropFirst() {
if cmd == "warmer" { t.warmer() } else { t.setTarget(target: Int(cmd.dropFirst(4))!) }
}
print(t.display())
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
1الأصناف والكائنات
العمل مع الملفاتتعريف الأصنافالأساليب وselfالمُهيِّئاتالأصناف هي مراجعمراجعة - بطاقة المكتبة4التغليف
التحكم في الوصولللقراءة فقط من الخارجحماية الحالةالمهيئات القابلة للفشلمراجعة - الحساب البنكي7تعدد الأشكال والأنواع العامة
تعدد الأشكالتحويل الأنواعالدوال العامةالأنواع العامةمراجعة - حاسبة الأشكالتدرّب بنفسك: Playground لـ Swift