الهياكل
جزء من قسم البرمجة كائنية التوجه في رحلة Swift على Coddy. الدرس 7 من 57.
تجمع البنية البيانات والطرق مثل الصنف. تكتب Swift مهيئًا مطابقًا للأعضاء لكل بنية، مع وسيط واحد لكل خاصية، لذلك لا تحتاج البنية إلى init خاص بها:
struct Point {
var x: Int
var y: Int
func distanceFromOrigin() -> Int {
abs(x) + abs(y)
}
}
let p = Point(x: 3, y: -4)
print(p.x)
print(p.distanceFromOrigin())الناتج:
3
7يمكن ترك الخصائص ذات القيم الافتراضية خارج المُهيّئ عضوًا بعضو:
struct Settings {
var volume = 5
var muted = false
}
let quiet = Settings(volume: 1)
print(quiet.volume)
print(quiet.muted)الناتج:
1
falseلا يمكن لهيكل مخزّن في ثابت let أن يتغير إطلاقًا، ولا حتى خصائصه من نوع var. خزّنه في var لتغييره:
let fixed = Point(x: 1, y: 2)
// fixed.x = 5 // خطأ: لا يمكن التعيين، fixed هو ثابت let
var moving = Point(x: 1, y: 2)
moving.x = 5 // جيدالعديد من أنواع Swift الخاصة بها هي هياكل: Int وDouble وString وArray وDictionary. تعمل هياكلك بالطريقة نفسها التي تعمل بها تلك الأنواع: فهي قيم بسيطة.
struct Money {
var cents: Int
func formatted() -> String {
"\(cents / 100).\(cents % 100 < 10 ? "0" : "")\(cents % 100)"
}
}
print(Money(cents: 1250).formatted())
print(Money(cents: 305).formatted())الناتج:
12.50
3.05التحدي
سهلأعلن عن struct Item بالخصائص name (String)، وprice (Int، بالسنتات)، وquantity (Int). أضف أسلوبًا total() يُرجع حاصل ضرب السعر في الكمية، وأسلوبًا line() يُرجع 2 x tea = 350.
يقرأ الكود المزوَّد عنصرًا واحدًا في كل سطر بالتنسيق name,price,quantity، وينشئ كل Item باستخدام المُهيّئ memberwise، ويطبع line(). ثم يطبع sum: ومجموع جميع القيم الإجمالية.
ضع الكود الخاص بك في Item.swift. يحتوي main.swift على كود الإدخال/الإخراج المزوَّد، ولا يمكن تعديله.
جرّب بنفسك
// كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
var input: [String] = []
while let line = readLine() { input.append(line) }
var sum = 0
for row in input {
let p = row.split(separator: ",").map(String.init)
let item = Item(name: p[0], price: Int(p[1])!, quantity: Int(p[2])!)
print(item.line())
sum += item.total()
}
print("sum: \(sum)")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
1الأصناف والكائنات
العمل مع الملفاتتعريف الأصنافالأساليب وselfالمُهيِّئاتالأصناف هي مراجعمراجعة - بطاقة المكتبة4التغليف
التحكم في الوصولللقراءة فقط من الخارجحماية الحالةالمهيئات القابلة للفشلمراجعة - الحساب البنكي7تعدد الأشكال والأنواع العامة
تعدد الأشكالتحويل الأنواعالدوال العامةالأنواع العامةمراجعة - حاسبة الأشكالتدرّب بنفسك: Playground لـ Swift