Zig Academy · درس

ما الذي يضمنه defer

شغّلوا الشيفرة عند انتهاء النطاق

الدرس 1 من 413 خطوة

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

تنظيف يمكنك الوثوق به

تفتح كل البرامج تقريباً مورداً يجب إغلاقه لاحقاً. يوفّر لك Zig عبارة defer حتى لا يُنسى التنظيف أبداً.

ما الذي تفعله defer

تجدول عبارة defer جزءاً من الشيفرة ليُنفّذ عند انتهاء النطاق المحيط بها، مهما كانت طريقة خروجه.

defer cleanup();

اكتب التنظيف فوراً

الفكرة الأساسية: ضع سطر التنظيف بجوار السطر الذي يحصل على المورد، بحيث يستحيل فصل أحدهما عن الآخر.

const file = try open();
defer file.close();

تُنفّذ عند الخروج من النطاق

لا تُنفّذ الشيفرة المؤجلة فوراً، بل تنتظر حتى ينتهي النطاق الذي توجد فيه، ثم تُنفّذ.

{
    defer cleanup();
    work();
}

تعمل مع كل مسارات الخروج

سواء انتهى النطاق بشكل طبيعي أو أجريت return مبكرة من منتصفه، تظل الشيفرة المؤجلة تُنفّذ. لا يوجد مسار يفلت منها.

defer file.close();
if (bad) return error.Oops;

الأخطاء لا تتخطاها

حتى إذا أعادت عبارة try لاحقاً في الدالة خطأً، تكون defer قد جُدولت مسبقاً وستُنفّذ أثناء الخروج.

أي عبارة، وليس الاستدعاءات فقط

يمكن أن تحتوي defer على أي عبارة واحدة، بما في ذلك block، ولذلك يمكنك جمع عدة خطوات تنظيف معاً.

defer {
    free(buf);
    log("done");
}

نطاقات تتجاوز الدوال

ترتبط defer بـالنطاق المحيط بها، والذي قد يكون جسم حلقة أو كتلة if، وليس الدالة كاملة فقط.

while (more()) {
    defer step();
}

لا حاجة إلى التتبّع اليدوي

من دون defer، يجب أن تتذكر الإغلاق في كل فرع. أما معها، فينفّذ المصرّف عملية التنظيف، فلا يمكنك نسيان أي مسار.

تُقرأ من الأعلى إلى الأسفل

بما أن الحصول على المورد وتنظيفه متجاوران، تُقرأ شيفرتك كقصة واضحة: افتح، استخدم، والإغلاق مضمون مسبقاً.

الأداة الأساسية لسلامة الموارد

من الملفات إلى الحجوزات إلى الأقفال، تُعد defer الأداة اليومية التي تحافظ على خلو برامج Zig من تسرّبات الموارد وترتيبها.

تحقّق سريع

متى تُنفّذ العبارة المؤجلة فعلياً؟

مراجعة

تعرّفت إلى defer: اكتب التنظيف بجوار الحصول على المورد، ويضمن Zig تنفيذه عند الخروج من النطاق في كل مسار. 🧹

البدء مجانًا

تعلم Zig مع معلم ذكاء اصطناعي — مجانًا

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

الدورات
30
الدروس
120

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

هل درس «ما الذي يضمنه defer» مجاني؟

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

ماذا ستتعلم في «ما الذي يضمنه defer»؟

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

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

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

كم من الوقت يستغرق درس «ما الذي يضمنه defer»؟

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

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

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

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

  1. ما الذي يضمنه defer
  2. ترتيب تنفيذ عمليات defer المتعددة
  3. ‏defer مقابل errdefer عملياً
  4. إقران Open بـ Close
← العودة إلى Zig Academy