الأنواع قيم comptime
تعامَلوا مع النوع كأي قيمة أخرى
الأنواع قيم comptime درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
النوع مجرد قيمة
النوع في Zig ليس صياغة سحرية؛ بل هو قيمة عادية يمكنكم تخزينها وتمريرها وإعادتها. لكنه يوجد فقط في وقت الترجمة. 🧠
نوع النوع هو type
لكل نوع النوع type. لذلك فإن u8 قيمة نوعها type، تمامًا كما أن 5 قيمة نوعها عدد صحيح.
const T: type = u8;اربطوا نوعًا بثابت const
يمكنكم تسمية نوع باستخدام ثابت. هنا تصبح Number اسمًا آخر لـ i32، ويمكنكم استخدامها حيثما يُتوقع نوع.
const Number = i32;
const x: Number = 7;مرّروا نوعًا إلى دالة
يمكن للدالة قبول نوع باعتباره وسيط comptime. ويكون الوسيط قيمة فعلية تُقيَّم أثناء ترجمة البرنامج.
fn sizeOf(comptime T: type) usize {
return @sizeOf(T);
}أعيدوا نوعًا من دالة
بما أن الأنواع قيم، يمكن للدالة إعادة نوع. ويكون نوع إرجاعها هو type، وينتج جسمها نوعًا بوصفه النتيجة.
fn Pair() type {
return struct { a: u8, b: u8 };
}هكذا تعمل الأنواع العامة
يمثل تمرير الأنواع وإعادتها أساس الأنواع العامة في Zig. فلا توجد صياغة خاصة للأنواع العامة، بل تتدفق قيم الأنواع فحسب.
توجد الأنواع في وقت الترجمة فقط
لا توجد قيمة من النوع type إلا أثناء الترجمة. ولا يمكنكم تخزين نوع في متغير وقت تشغيل أو قراءته من الإدخال.
افحصوا نوعًا باستخدام الدوال المضمنة
تتعامل العناصر المضمّنة مع النوع باعتباره بيانات. تأخذ @sizeOf قيمة نوع وتُرجع عدد البايتات التي يشغلها مثيل واحد منه.
const bytes = @sizeOf(u32);مقارنة الأنواع للتحقق من تساويها
بما أن الأنواع قيم، يمكنكم مقارنتها وقت الترجمة. يكون التعبير T == u8 صحيحًا فقط عندما يكون T هو u8 تمامًا.
اختيار نوع وقت الترجمة
يمكنكم إجراء تفرّع استنادًا إلى نوع واختيار نوع آخر، وكل ذلك أثناء الترجمة. يتيح هذا لدالة واحدة تكييف سلوكها وفقًا للنوع الذي تحصل عليه.
تسمية نوع من ناتج دالة
بما أن الدالة يمكنها إرجاع نوع، يمكنكم ربط هذا الناتج بثابت ثم استخدامه تمامًا مثل اسم أي نوع مضمّن.
const Point = Pair();
const p: Point = .{ .a = 1, .b = 2 };تحقق سريع
في Zig، ما نوع النوع u8 نفسه؟
مراجعة
الأنواع في Zig هي قيم comptime من النوع type. يمكنكم تسميتها وتمريرها وإرجاعها ومقارنتها، وهذه هي الطريقة التي تُبنى بها الأنواع العامة تمامًا. 🎯
الأسئلة الشائعة
هل درس «الأنواع قيم comptime» مجاني؟
نعم — نص درس «الأنواع قيم comptime» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «الأنواع قيم comptime»؟
تعامَلوا مع النوع كأي قيمة أخرى تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الأنواع قيم comptime»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- وقت الترجمة مقابل وقت التشغيل
- معاملات وقيم comptime
- الأنواع قيم comptime
- inline for والحلقات المفكوكة