الطرائق ومعامل self
أضيفوا السلوك إلى هياكلكم
الطرائق ومعامل self درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
البيانات بالإضافة إلى السلوك
يمكن لـ struct أن تحتوي على أكثر من الحقول. إذ يمكنك التصريح عن methods بداخلها: وهي دوال تعمل على البيانات التي تنتمي إليها.
تعيش الدوال في الداخل
اكتب fn عادية داخل جسم struct. وستصبح ضمن نطاق النوع، ويمكن استدعاؤها بصيغة Type.name.
const Point = struct {
x: i32,
y: i32,
fn origin() Point {
return Point{ .x = 0, .y = 0 };
}
};مَعلمة self
تأخذ الدالة التي تعمل على نسخة القيمة باعتبارها مَعلمتها الأولى، ويُسمّى هذا المعامل self اصطلاحًا.
fn magnitude(self: Point) i32 {
return self.x + self.y;
}استدعِ باستخدام النقطة
استدعِ الدالة من خلال نسخة باستخدام نقطة. ويمرر Zig النسخة باعتبارها self تلقائيًا.
const p = Point{ .x = 3, .y = 4 };
const m = p.magnitude();self مجرد وسيطة
لا توجد أي حيلة خفية. فاستدعاء النقطة p.magnitude() مطابق تمامًا لـ Point.magnitude(p).
const m = Point.magnitude(p);قراءة self حسب القيمة
يمنحك أخذ self حسب القيمة نسخةً. وهذا مناسب لقراءة الحقول، لكن التغييرات التي تجريها عليها لن تستمر.
fn sum(self: Point) i32 {
return self.x + self.y;
}التعديل يتطلب مؤشرًا
لتغيير الحقول، خذ self كمؤشر باستخدام *Point. عندها تُجرى الكتابات على النسخة الأصلية، لا على نسخة منسوخة.
fn moveRight(self: *Point) void {
self.x += 1;
}المرجع التلقائي عند الاستدعاء
عندما تتطلب إحدى الدوال *Point، يتولى Zig أخذ عنوان المتغير الخاص بكم. وما زلتم تكتبون فقط p.moveRight().
var p = Point{ .x = 0, .y = 0 };
p.moveRight();استخدموا @This للنوع
يمكنكم داخل الجسم الإشارة إلى النوع المحتوي باستخدام @This()، وهذا مفيد عندما لا يكون للنوع اسم خارجي بعد.
const Counter = struct {
n: i32,
fn get(self: @This()) i32 {
return self.n;
}
};الدوال من دون self
لا يلزم أن تتلقى الدالة self إطلاقًا. فكثيرًا ما تتجاهله البُناة والدوال المساعدة، وتعمل كدوال عادية ضمن مساحة أسماء.
fn init(x: i32, y: i32) Point {
return Point{ .x = x, .y = y };
}تنظيم الشيفرة باستخدام الدوال
يؤدي تجميع السلوك بجوار البيانات إلى إبقاء الشيفرة مرتبة. وتجعل الدوال البنية تبدو كأنها مكوّن صغير مستقل بذاته.
تحقق سريع
ما الذي تحتاج إليه الدالة لتغيير حقول نسخة؟
مراجعة
أضفتم دوال: وهي دوال داخل بنية، مع كون self هو النسخة. استخدموا self: Point للقراءة وself: *Point للتعديل. 🔧
تعلم Zig مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «الطرائق ومعامل self» مجاني؟
نعم — نص درس «الطرائق ومعامل self» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «الطرائق ومعامل self»؟
أضيفوا السلوك إلى هياكلكم تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الطرائق ومعامل self»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التصريح عن الهياكل والحقول
- الطرائق ومعامل self
- القيم الافتراضية للحقول
- الهياكل المجهولة والصفوف