أدوار الماكرو: مستقل مقابل ملحق
تعرّفوا إلى ماكروهات #expression وأدوار ماكرو @attached مثل peer وmember وaccessor.
أدوار الماكرو: مستقل مقابل ملحق درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
ما المقصود بماكرو Swift؟
توسّع ماكروات Swift الشيفرة المصدرية وقت الترجمة، فتولّد الشيفرة النمطية تلقائيًا من دون كلفة وقت التشغيل.
// Macros are invoked with # (freestanding) or @ (attached)
#warning("Fix this later")
@Observable class Counter { var count = 0 }ماكروات التعبيرات المستقلة
تبدأ ماكروات التعبيرات المستقلة بالرمز #، وتنتج قيمة أو تنفّذ أثرًا جانبيًا.
// #stringify expands to a tuple of the value and its source string
let (val, src) = #stringify(1 + 2)
print(val, src) // 3, "1 + 2"ماكروات التعريفات المستقلة
تُصدر ماكروات التعريفات المستقلة تعريفات جديدة، مثل الدوال والمتغيرات، في موضع الاستخدام.
// #makePair emits two variables
#makePair("point", x: 1, y: 2)
// expands to: let pointX = 1; let pointY = 2ماكروات الأعضاء المرفقة
تضيف ماكروات @member المرفقة خصائص مخزنة أو محسوبة، أو init، أو أساليب إلى النوع المرفقة به.
@AddID
struct User { var name: String }
// Expands to: var id = UUID()ماكروات الموصّلات المرفقة
تولّد ماكروات @accessor المرفقة تطبيقات getter/setter للخصائص المخزنة.
struct Point {
@Clamped(0...100)
var x: Int = 0
// accessor macro generates get/set with clamping
}ماكروات النظراء المرفقة
تضيف ماكروات النظراء تعريفات شقيقة بجوار التعريف المرفقة به.
class Service {
@AddAsync
func fetchSync(completion: @escaping (Data)->Void) { ... }
// peer macro adds: func fetch() async -> Data
}ماكروات التوافق المرفقة
تضيف ماكروات التوافق توافقات البروتوكولات والتطبيقات المطلوبة إلى النوع.
@EquatableByID
struct Product { var id: Int; var name: String }
// adds: extension Product: Equatable { ... }ماكروات التوسعة المرفقة
تولّد ماكروات التوسعة كتل توسعة كاملة لنوع ما، وهي مفيدة لإضافة تطبيقات معقدة للبروتوكولات.
@CustomCodable
struct Config { var host: String; var port: Int }
// adds: extension Config: Codable { custom encode/decode }توسعة الماكرو وقت الترجمة
تحدث جميع توسعات الماكرو أثناء الترجمة — من دون كلفة وقت التشغيل، كما تكون الشيفرة الموسّعة مرئية في Xcode.
// Right-click macro usage in Xcode → "Expand Macro"
// to see the generated source codeإعلان ماكرو
يُعلن عن الماكروات في هدف ماكرو منفصل باستخدام السمة @freestanding أو @attached.
@freestanding(expression)
public macro stringify<T>(_ value: T) -> (T, String)
= #externalMacro(module: "MyMacros", type: "StringifyMacro")ملخص أدوار الماكرو
المستقلة: #expression، #declaration. المرفقة: @member، @accessor، @peer، @conformance، @extension.
// Freestanding
let result = #stringify(40 + 2)
// Attached
@Observable class Model { var count = 0 }اختبار سريع
ما دور الماكرو الذي يضيف أعضاء جددًا، مثل الخصائص أو init، إلى النوع الذي يزيّنه؟
مراجعة الدرس
تنتج الماكروات المستقلة (#name) قيمًا أو تعريفات. وتضيف الماكروات المرفقة (@name) أعضاء أو موصّلات أو نظراء أو توافقات أو توسعات إلى الأنواع. وتحدث جميع التوسعات وقت الترجمة.
الأسئلة الشائعة
هل درس «أدوار الماكرو: مستقل مقابل ملحق» مجاني؟
نعم — نص درس «أدوار الماكرو: مستقل مقابل ملحق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «أدوار الماكرو: مستقل مقابل ملحق»؟
تعرّفوا إلى ماكروهات #expression وأدوار ماكرو @attached مثل peer وmember وaccessor. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أدوار الماكرو: مستقل مقابل ملحق»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أدوار الماكرو: مستقل مقابل ملحق
- كتابة ماكرو تعبير مستقل
- ماكروهات الأعضاء الملحقة لتقليل الشيفرة المتكررة
- اختبار الماكروهات وتصحيحها