0Pricing
Swift Academy · درس

Structs مقابل Classes والخصائص وعمليات التهيئة

قارن بين دلالات القيمة والمرجع، واستخدم الخصائص المخزنة والمحسوبة، ومراقبات الخصائص، وعمليات التهيئة، وdeinit للفئات.

Structs مقابل Classes والخصائص وعمليات التهيئة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.

نظرة عامة

لدى Swift نوعان مركبان رئيسيان: struct (قيمي) وclass (مرجعي).

  • تنسخ Structs القيم عند الإسناد
  • تتشارك Classes المراجع

القيمة مقابل المرجع

تنسخ Structs القيم، بينما تتشارك classes المراجع. لا يؤثر تغيير b في a، لكن تغيير d يؤثر في c.

struct Point { var x = 0, y = 0 }
class CPoint { var x = 0, y = 0 }

var a = Point(x: 1, y: 1)
var b = a          // copy
b.x = 9
print("struct a.x =", a.x, "b.x =", b.x) // 1, 9

let c = CPoint(); c.x = 1
let d = c          // same reference
d.x = 9
print("class c.x =", c.x, "d.x =", d.x) // 9, 9

الخصائص

تحتفظ الخصائص المخزنة بالبيانات، بينما تستنتج الخصائص المحسوبة القيم عند الوصول إليها.

struct Rectangle {
    var width: Double      // stored
    var height: Double     // stored
    var area: Double {     // computed
        return width * height
    }
}
let r = Rectangle(width: 3, height: 4)
print(r.area)  // 12

المراقبات

استخدم willSet/didSet لمراقبة التغييرات في الخصائص المخزنة.

struct Counter {
    var value: Int = 0 {
        willSet { print("will set to", newValue) }
        didSet  { print("did set from", oldValue) }
    }
}
var cnt = Counter()
cnt.value = 5

المهيئات

تحصل Structs على مهيئ أعضاء. وتعرّف Classes المهيئ init (المعيّن)، ويمكنها إضافة مهيئات convenience.

struct User {
    var name: String
    // memberwise init is synthesized: User(name:)
}
class Person {
    var name: String
    init(name: String) {    // designated
        self.name = name
    }
    convenience init() {    // convenience
        self.init(name: "Guest")
    }
}
let u = User(name: "Ada")
let p = Person()
print(u.name, p.name)

deinit

تحتوي classes وحدها على deinit، الذي يُستدعى عند إلغاء تخصيص النسخة (ARC).

class Temp {
    let id: Int
    init(id: Int) { self.id = id }
    deinit { print("Temp \\(id) deinit") }
}
do {
    let t = Temp(id: 1)
    print("using", t.id)
} // t goes out of scope and deinit may run

سؤال عن Struct وClass

تحقق سريع: أي عبارة توضّح الفرق بين Structs وclasses بشكل صحيح؟

مراجعة

مراجعة: فضّل struct للبيانات البسيطة (دلالات القيمة). واستخدم class للهوية المشتركة والوراثة وdeinit. أضف الخصائص المخزنة والمحسوبة والمراقبات والمهيئات المناسبة.

الأسئلة الشائعة

هل درس «Structs مقابل Classes والخصائص وعمليات التهيئة» مجاني؟

نعم — نص درس «Structs مقابل Classes والخصائص وعمليات التهيئة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.

ماذا ستتعلم في «Structs مقابل Classes والخصائص وعمليات التهيئة»؟

قارن بين دلالات القيمة والمرجع، واستخدم الخصائص المخزنة والمحسوبة، ومراقبات الخصائص، وعمليات التهيئة، وdeinit للفئات. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.

كم من الوقت يستغرق درس «Structs مقابل Classes والخصائص وعمليات التهيئة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Structs مقابل Classes والخصائص وعمليات التهيئة
  2. الخصائص المخزنة مقابل المحسوبة والمراقبات
  3. عمليات التهيئة وdeinit (الفئات)
← العودة إلى Swift Academy