دوال تتلقى نوعاً
أنشئوا القوالب العامة باستخدام معاملات comptime T
دوال تتلقى نوعاً درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
الأنواع العامة، بأسلوب Zig
لا تملك Zig صياغة منفصلة للأنواع العامة. بدلًا من ذلك، يمكن للدالة قبول نوع باعتباره أحد معاملاتها واستخدامه مثل أي قيمة أخرى. ✨
معامل النوع هو comptime
لأن النوع يجب أن يكون معروفًا عند بناء الشيفرة، يُوسم معامل النوع دائمًا بـ comptime. ويمرّر المستدعي نوعًا حقيقيًا.
fn first(comptime T: type, items: []const T) T {
return items[0];
}type نوع حقيقي
في Zig، الكلمة type نفسها نوع، ولذلك يمكن التصريح عن معامل على أنه type للدلالة على أي نوع كان.
comptime T: typeاستخدام T في التوقيع
بعد تسمية النوع T، يمكنكم استخدامه للمعاملات اللاحقة ونوع الإرجاع، وبذلك تربطون بينها جميعًا.
fn max(comptime T: type, a: T, b: T) T {
return if (a > b) a else b;
}استدعاء دالة عامة
لاستدعائها، مرّروا النوع المحدد أولًا، ثم المعاملات العادية. نطلب هنا القيمة الأكبر من قيمتي i32.
const m = max(i32, 3, 9);دالة واحدة وأنواع متعددة
تعمل الدالة نفسها مع أي نوع يدعم العمليات التي تستخدمونها. استبدلوا i32 بـ f64، وستظل الشيفرة مناسبة.
const f = max(f64, 1.5, 2.5);تخصّص Zig كل استدعاء
لكل نوع مختلف تمرّرونه، تنشئ Zig نسخة مخصصة من الدالة. تسمى هذه العملية monomorphization، وتتم وقت الترجمة.
يبقى الجسم عامًا
تكتبون النوع صراحةً عند الاستدعاء، لكن الجسم يظل عامًا. تتحقق Zig من صلاحية العمليات التي تستخدمونها لأي قيمة يصل إليها T.
type يعني عدم وجود boxing مخفي
يختلف تمرير type حقيقي عن تعدد الأشكال وقت التشغيل: فلا يوجد vtable ولا boxing، بل نسخة ملموسة تُختار وقت البناء.
تظهر الأخطاء وقت الترجمة
إذا استدعيتم max بنوع لا يملك معامل أكبر من، فستُبلغ Zig عن المشكلة عند بناء التخصيص، لا وقت التشغيل.
تأتي معاملات النوع أولًا
من المتعارف عليه إدراج معامل النوع comptime قبل معاملات القيم، بحيث يكون النوع معروفًا قبل وصف البيانات.
fn clone(comptime T: type, value: T) T {
return value;
}تحقق سريع
تريدون دالة تعمل مع أنواع متعددة في Zig. كيف تصرّحون عن معامل نوعها؟
مراجعة
مرّروا معامل comptime T: type لجعل الدالة عامة. وتنشئ Zig نسخة مخصصة لكل نوع تستخدمونه فعليًا. 🎯
الأسئلة الشائعة
هل درس «دوال تتلقى نوعاً» مجاني؟
نعم — نص درس «دوال تتلقى نوعاً» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «دوال تتلقى نوعاً»؟
أنشئوا القوالب العامة باستخدام معاملات comptime T تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «دوال تتلقى نوعاً»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- دوال تتلقى نوعاً
- هياكل البيانات العامة
- @TypeOf وتأمل الأنواع
- معاملات anytype