0Pricing
Swift Academy · درس

الاستبدال المخصص داخل السلاسل النصية

وسّع الاستبدال بإضافة مقاطعك الخاصة.

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

استيفاء السلاسل النصية المخصص

تتيح لكم Swift توسيع طريقة عمل الاستيفاء عبر إضافة أساليب إلى String.StringInterpolation. ويخصص ذلك ما يحدث لأنواع أو تسميات محددة من الوسائط.

extension String.StringInterpolation {
    mutating func appendInterpolation(shout value: String) {
        appendLiteral(value.uppercased() + "!")
    }
}
print("Message: \(shout: "hello")")

أسلوب appendInterpolation

كل استيفاء مخصص هو mutating func appendInterpolation(...). وتحدد معلماته ما تكتبونه بين القوسين في السلسلة النصية.

extension String.StringInterpolation {
    mutating func appendInterpolation(repeat text: String, times: Int) {
        appendLiteral(String(repeating: text, count: times))
    }
}
print("\(repeat: "ab", times: 3)")

appendLiteral وappendInterpolation

داخل الأسلوب المخصص، تبنون المخرجات عبر استدعاء appendLiteral للنص العادي وإعادة استخدام الاستيفاءات الموجودة للقيم.

extension String.StringInterpolation {
    mutating func appendInterpolation(twice value: Int) {
        appendLiteral("\(value)\(value)")
    }
}
print("\(twice: 7)")

وسائط الاستيفاء المُسمّاة

تصبح تسمية المعلمة الأولى الكلمة المفتاحية التي تستخدمونها، مثل \(shout: ...). وهذا يوضح القصد في موضع الاستدعاء.

extension String.StringInterpolation {
    mutating func appendInterpolation(currency amount: Double) {
        appendLiteral(String(format: "$%.2f", amount))
    }
}
print("Price: \(currency: 9.5)")

معلمات متعددة

يمكن أن تقبل الاستيفاءات المخصصة عدة معلمات، مما يتيح لكم تمرير الخيارات إلى جانب القيمة.

extension String.StringInterpolation {
    mutating func appendInterpolation(_ value: Double, places: Int) {
        appendLiteral(String(format: "%.\(places)f", value))
    }
}
print("\(3.14159, places: 2)")

تنسيق تواريخ القيم

من الاستخدامات الشائعة عرض قيمة بطريقة خاصة بالمجال، مثل ملء رقم بالمسافات ليشغل عرضًا ثابتًا.

extension String.StringInterpolation {
    mutating func appendInterpolation(padded value: Int, width: Int) {
        appendLiteral(String(format: "%0\(width)d", value))
    }
}
print("ID: \(padded: 42, width: 5)")

المخرجات الشرطية

يمكن أن يتضمن الاستيفاء المخصص منطقًا ينتج نصًا مختلفًا بناءً على الإدخال.

extension String.StringInterpolation {
    mutating func appendInterpolation(yesNo flag: Bool) {
        appendLiteral(flag ? "Yes" : "No")
    }
}
print("Active: \(yesNo: true)")

إعادة استخدام الاستيفاءات الموجودة

يمكنكم داخل أسلوبكم استدعاء appendInterpolation للأنواع المضمنة، وبناء سلوككم اعتمادًا على السلوك القياسي.

extension String.StringInterpolation {
    mutating func appendInterpolation(bracketed value: Int) {
        appendLiteral("[")
        appendInterpolation(value)
        appendLiteral("]")
    }
}
print("\(bracketed: 9)")

القيم الافتراضية للمعلمات

يمكن للاستيفاءات المخصصة تحديد قيم افتراضية للمعلمات، بحيث يتمكن المستدعون من حذفها.

extension String.StringInterpolation {
    mutating func appendInterpolation(money value: Double, symbol: String = "$") {
        appendLiteral(symbol + String(format: "%.2f", value))
    }
}
let sym = "EUR "
print("\(money: 5.0)")
print("\(money: 5.0, symbol: sym))")

متى تستخدمون الاستيفاء المخصص

استخدموا الاستيفاء المخصص عندما يتكرر نمط تنسيق في أنحاء الشيفرة؛ فهو يضع المنطق في مكان مركزي خلف موضع استدعاء واضح.

extension String.StringInterpolation {
    mutating func appendInterpolation(stars n: Int) {
        appendLiteral(String(repeating: "*", count: n))
    }
}
print("Rating: \(stars: 4)")

ملخص الاستيفاء المخصص

من خلال توسيع String.StringInterpolation، تحولون عمليات التنسيق المتكررة إلى صيغة قابلة لإعادة الاستخدام وسهلة القراءة، مضمّنة مباشرةً في سلاسلكم النصية.

extension String.StringInterpolation {
    mutating func appendInterpolation(percent value: Double) {
        appendLiteral(String(format: "%.0f%%", value * 100))
    }
}
print("Done: \(percent: 0.75)")

تحقق سريع

تذكّروا الآلية الكامنة وراء الاستيفاء المخصص.

مراجعة: استيفاء السلاسل النصية المخصص

تعلّمتم أن توسيع String.StringInterpolation باستخدام أساليب appendInterpolation يتيح لكم تعريف صيغة استيفاء جديدة، وبناء المخرجات باستخدام appendLiteral والاستيفاءات المتداخلة، مع دعم التسميات والمعلمات المتعددة والقيم الافتراضية للحصول على تنسيق واضح قابل لإعادة الاستخدام.

extension String.StringInterpolation {
    mutating func appendInterpolation(upper value: String) {
        appendLiteral(value.uppercased())
    }
}
print("Hello \(upper: "swift")")

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

هل درس «الاستبدال المخصص داخل السلاسل النصية» مجاني؟

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

ماذا ستتعلم في «الاستبدال المخصص داخل السلاسل النصية»؟

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

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

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

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

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

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

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

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

  1. الاستبدال الأساسي داخل السلاسل النصية
  2. تنسيق الأعداد داخل السلاسل النصية
  3. ثوابت السلاسل النصية متعددة الأسطر
  4. الاستبدال المخصص داخل السلاسل النصية
← العودة إلى Swift Academy