0Pricing
Swift Academy · درس

‏CustomStringConvertible

حدّد وصفًا سهل القراءة لأنواعك.

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

ما هو CustomStringConvertible؟

يتيح لكم هذا البروتوكول التحكم في كيفية ظهور النوع عند طباعته أو تضمينه في سلسلة نصية. وعليكم توفير الخاصية description.

الافتراضي غير أنيق

من دونه، تطبع البنى بصيغتها الكاملة التي تتضمن جميع أعضائها، وغالبًا ما تكون هذه الصيغة كثيرة التفاصيل:

struct Point { let x: Int; let y: Int }
print(Point(x: 1, y: 2))  // Point(x: 1, y: 2)

إضافة description

التزموا بالبروتوكول ووفروا var description: String:

struct Point: CustomStringConvertible {
    let x: Int
    let y: Int
    var description: String { "(\(x), \(y))" }
}
print(Point(x: 1, y: 2))  // (1, 2)

تستخدمها print وString(describing:)

تستخدم print وتضمين السلاسل النصية وصفكم:

struct Money: CustomStringConvertible {
    let cents: Int
    var description: String { "$\(Double(cents) / 100)" }
}
let m = Money(cents: 250)
print("price is \(m)")  // price is $2.5

description مقارنةً بالخصائص المباشرة

تُستخدم description للنص المقروء من البشر والموجّه إلى المستخدم. ولا يُفترض تحليل هذا النص لإعادة تحويله إلى قيمة — فهذا اهتمام مختلف تتولاه Codable. احرصوا على أن يكون مقروءًا.

تنسيق تعداد

امنحوا التعدادات أسماءً سهلة القراءة:

enum Suit: CustomStringConvertible {
    case hearts, spades
    var description: String {
        switch self {
        case .hearts: return "Hearts"
        case .spades: return "Spades"
        }
    }
}
print(Suit.hearts)  // Hearts

تركيب الأوصاف

أنشئوا وصفًا من أوصاف الأعضاء:

struct Card: CustomStringConvertible {
    let rank: Int
    let suit: String
    var description: String { "\(rank) of \(suit)" }
}
let cards = [Card(rank: 1, suit: "H"), Card(rank: 13, suit: "S")]
print(cards.map { $0.description })  // ["1 of H", "13 of S"]

داخل المجموعات

تستدعي طباعة مجموعة وصف كل عنصر:

struct Tag: CustomStringConvertible {
    let name: String
    var description: String { "#\(name)" }
}
print([Tag(name: "swift"), Tag(name: "ios")])  // [#swift, #ios]

يستخدم التضمين description

يستخدم تضمين السلاسل النصية وصفكم تلقائيًا:

struct Temperature: CustomStringConvertible {
    let celsius: Int
    var description: String { "\(celsius)C" }
}
let t = Temperature(celsius: 21)
print("Now: \(t)")  // Now: 21C

اجعلوه خفيفًا

قد تُستدعى description كثيرًا (في التسجيل وتصحيح الأخطاء). تجنبوا تنفيذ أعمال مكلفة داخلها؛ واحسبوا سلسلة نصية بسيطة من الخصائص المخزنة.

struct ID: CustomStringConvertible {
    let value: Int
    var description: String { "ID#\(value)" }
}
print(ID(value: 42))  // ID#42

التنسيق الشرطي

يمكن أن يتفرع description حسب الحالة ليُقرأ بشكل طبيعي:

struct Stock: CustomStringConvertible {
    let count: Int
    var description: String {
        count == 0 ? "Out of stock" : "\(count) in stock"
    }
}
print(Stock(count: 0))  // Out of stock
print(Stock(count: 5))  // 5 in stock

تحقق سريع

ما الخاصية التي يتطلبها CustomStringConvertible؟

مراجعة

لقد تعلمتم CustomStringConvertible:

  • وفّروا var description: String للنص الموجّه إلى المستخدم
  • تستخدمها print وString(describing:) وتضمين السلاسل النصية
  • اجعلوها مقروءة وخفيفة؛ ولا تهدفوا إلى إمكانية التحويل ذهابًا وإيابًا
  • تعمل تلقائيًا داخل المجموعات

التالي: CustomDebugStringConvertible.

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

هل درس «‏CustomStringConvertible» مجاني؟

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

ماذا ستتعلم في «‏CustomStringConvertible»؟

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

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

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

كم من الوقت يستغرق درس «‏CustomStringConvertible»؟

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

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

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

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

  1. ‏CustomStringConvertible
  2. ‏CustomDebugStringConvertible
  3. الانعكاس باستخدام Mirror
  4. إنشاء أنواع سهلة التصحيح
← العودة إلى Swift Academy