0Pricing
Zig Academy · درس

‏undefined والذاكرة غير المهيأة

احجزوا مساحة تخزين قبل توفر قيمة

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

حجز المساحة أولًا

أحيانًا تريد حجز مساحة تخزين قبل امتلاك قيمة تضعها فيها. تمنحك Zig الكلمة المفتاحية undefined لهذا الغرض تحديدًا.

تعرّف إلى undefined

يعلن استخدام undefined عن binding تكون ذاكرته reserved لكنه لا يحتوي على قيمة ذات معنى بعد. وأنت تتعهد بملئه قريبًا.

var buffer: [16]u8 = undefined;

إنه تعهّد

يمثل undefined تعهدك بإسناد قيمة حقيقية قبل القراءة. وإذا قرأته أولًا، فستحصل على garbage، أي نمط بتات غير محدد.

شائع مع المخازن المؤقتة

المصفوفة الثابتة التي توشك على ملئها هي الحالة الكلاسيكية. تحدد حجم buffer، وتتركه undefined، ثم تكتب فيه عنصرًا تلو الآخر.

var line: [256]u8 = undefined;

تلتقطك آليات الأمان

في وضعي Debug وReleaseSafe، تملأ Zig الذاكرة غير المحددة ببايتات 0xAA. ويساعدك هذا النمط الواضح على اكتشاف القراءات المبكرة غير المقصودة.

أسند قيمة قبل القراءة

القاعدة بسيطة: اكتب دائمًا قيمة حقيقية قبل قراءة binding من نوع undefined. فقراءته أولًا خطأ تريد Zig منك تجنبه.

var x: i32 = undefined;
x = 42;

undefined ليس null

يعني undefined ذاكرة غير مهيّأة، بينما يعني null قيمة absent مقصودة داخل قيمة اختيارية. فهما يحلان مشكلتين مختلفتين تمامًا.

تجاوز تكلفة التصفير

يؤدي ترك مساحة تخزين كبيرة بحالة undefined إلى تجنب تكلفة كتابة أصفار لا تحتاج إليها. وهذا خيار مقصود لتحسين performance، وليس كسلًا.

يمكن أن تكون الحقول undefined

يمكن أن يبدأ حقل في struct بحالة undefined أيضًا عندما تخطط لتعيينه لاحقًا. والفكرة كلها هي وجود حالة uninitialized صريحة وصادقة.

var p: Point = undefined;

استخدمه باعتدال

ينبغي لمعظم bindings أن تحتوي على قيمة حقيقية منذ البداية. استخدم undefined فقط عندما يكون حجز storage خام هو ما تحتاج إليه فعلًا.

الصراحة أفضل من الإخفاء

قد تترك لغات أخرى المتغيرات دون تهيئة بصمت. أما Zig فتجعل الأمر explicit، بحيث يرى كل من يقرأ الشيفرة القصد بوضوح.

تحقق سريع

تكتب ‎var x: i32 = undefined;‎ ثم تقرأ x قبل إسناد قيمة إليه. ماذا فعلت؟

مراجعة

تعلّمت أن undefined يحجز مساحة تخزين دون قيمة، وغالبًا ما يُستخدم للمخازن المؤقتة. أسند قيمة دائمًا قبل القراءة، وتذكّر أنه يختلف عن null. 📦

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

هل درس «‏undefined والذاكرة غير المهيأة» مجاني؟

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

ماذا ستتعلم في «‏undefined والذاكرة غير المهيأة»؟

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

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

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

كم من الوقت يستغرق درس «‏undefined والذاكرة غير المهيأة»؟

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

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

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

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

  1. استخدام const للقيم التي لا تتغير أبداً
  2. استخدام var للحالة القابلة للتغيير
  3. استنتاج النوع مقابل الأنواع الصريحة
  4. ‏undefined والذاكرة غير المهيأة
← العودة إلى Zig Academy