فحص الحقول باستخدام @typeInfo
افحص بنية النوع أثناء الترجمة
فحص الحقول باستخدام @typeInfo درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
ألقِ نظرة داخل أي نوع
يتيح Zig لشيفرتك فحص أنواعها أثناء ترجمتها. وتمنحك الدالة المضمّنة @typeInfo البنية الكاملة للنوع على شكل بيانات. 🔎
إرجاع قيمة Type.Info
تأخذ @typeInfo نوعًا وتُعيد قيمة من نوع std.builtin.Type. وهذه القيمة عبارة عن tagged union يصف بدقة نوع النوع الذي مرّرته.
const info = @typeInfo(u32);توضّح العلامة نوعه
تخبرك علامة الاتحاد بالفئة: struct أو int أو pointer وغير ذلك. وتستخدم switch عليها للتعامل مع كل نوع من الأنواع.
switch (@typeInfo(T)) {
.Struct => {},
else => {},
}الوصول إلى بيانات Struct
عندما يكون النوع struct، يحمل المتغيّر .Struct بيانات تصف حقوله وتصريحاته وتخطيطه.
const s = @typeInfo(Point).Struct;توجد الحقول في مصفوفة
تحتوي بيانات struct على مصفوفة fields. وكل إدخال فيها هو StructField يحمل اسم حقل واحد ونوعه وتفاصيل أخرى.
const fields = @typeInfo(Point).Struct.fields;قراءة اسم الحقل ونوعه
يعرِض كل StructField سلسلة name ونوعًا. وكلاهما قيمة وقت الترجمة، ويمكنك طباعتهما أو التفرّع بناءً عليهما.
const f = @typeInfo(Point).Struct.fields[0];
const n = f.name;استعراض الحقول باستخدام inline for
بما أن قائمة الحقول معروفة وقت الترجمة، فإنك تكرّر عليها باستخدام inline for. تُفكّك الحلقة، فتحصل كل خانة على شيفرتها الملموسة الخاصة.
inline for (@typeInfo(T).Struct.fields) |field| {
_ = field.name;
}فحص أنواع الأعداد الصحيحة أيضًا
بالنسبة إلى int، يكشف المتغيّر .Int عن كونه موقّعًا أو غير موقّع وعن عرض البتات، بحيث يمكنك تكييف المنطق مع نوع العدد الدقيق.
const i = @typeInfo(i16).Int;
const bits = i.bits;تكشف Enums أعضاءها
يسرد المتغيّر .Enum كل حقل من حقول enum مع اسمه وقيمته الصحيحة، ما يتيح لك توليد الشيفرة لكل خيار.
const e = @typeInfo(Color).Enum;
const fields = e.fields;تكشف المؤشرات هدفها
بالنسبة إلى المؤشرات، يخبرك المتغيّر .Pointer بالنوع التابع ونوع الحجم وما إذا كان const، بحيث يمكنك إزالة الطبقات.
const p = @typeInfo(*u8).Pointer;
const child = p.child;هذا ما يدعم المكتبات الحقيقية
يقود الانعكاس شيفرة JSON والتنسيق الخاصة بـZig نفسها؛ إذ تقرآن الحقول باستخدام @typeInfo وتتعاملان مع أي struct تقدّمه لهما. ✨
تحقّق سريع
تريد قائمة حقول struct وقت الترجمة. أي تعبير يمنحك إياها؟
مراجعة
تحوّل @typeInfo النوع إلى بيانات: بدّل بناءً على علامته، ثم اقرأ الحقول أو البتات أو الأعضاء، وكرّر عليها باستخدام inline for. 🎯
الأسئلة الشائعة
هل درس «فحص الحقول باستخدام @typeInfo» مجاني؟
نعم — نص درس «فحص الحقول باستخدام @typeInfo» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «فحص الحقول باستخدام @typeInfo»؟
افحص بنية النوع أثناء الترجمة تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «فحص الحقول باستخدام @typeInfo»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فحص الحقول باستخدام @typeInfo
- بناء الأنواع باستخدام @Type
- التحقق أثناء الترجمة و@compileError
- توليد التعليمات البرمجية باستخدام comptime