تمرير القيم مقابل المراجع
تعرّفوا إلى كيفية وصول الوسائط إلى الدالة
تمرير القيم مقابل المراجع درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
كيف تنتقل الوسائط
عند استدعاء دالة، يجب أن تُدخل Zig بياناتك إليها. وهناك طريقتان: تمرير القيمة نفسها أو تمرير مرجع إليها. 🚚
التمرير بالقيمة ينسخها
تُمرَّر الوسائط البدائية بالقيمة افتراضيًا: تحصل الدالة على نسخة خاصة بها ولا يمكنها تغيير الأصل لديك.
fn addOne(n: i32) i32 {
return n + 1;
}تبقى النسخ مستقلة
لأنها نسخة، لا تؤثر التعديلات داخل الدالة في المستدعي أبدًا. ويبقى متغيرك خارجها كما كان تمامًا.
المعلمات غير قابلة للتغيير
معلمات الدوال في Zig غير قابلة للتغيير. لا يمكنك إعادة إسناد معلمة داخل جسم الدالة، مما يجعل القصد واضحًا.
مرّر مؤشرًا للمشاركة
للسماح لدالة بتغيير بياناتك، مرّر مؤشرًا من النوع *T. عندها تعمل الدالة على قيمتك الفعلية، لا على نسخة منها.
fn bump(n: *i32) void {
n.* += 1;
}أزل الإشارة للوصول إليها
داخل الدالة، تستخدم .* للقراءة من خلال المؤشر أو الكتابة إليه. يحدّث n.* += 1 القيمة التي لا يزال المستدعي يحتفظ بها.
خذ العنوان باستخدام &
في موضع الاستدعاء، تمرّر عنوانًا باستخدام &. بعد ذلك يتيح bump(&count) للدالة تعديل count في موضعه.
var count: i32 = 0;
bump(&count); // count is now 1البيانات الكبيرة تفضّل المراجع
يُعد نسخ البنى الكبيرة إهدارًا للموارد. يتيح تمرير مؤشر ثابت مشاركة البيانات بتكلفة منخفضة من دون السماح بتغييرها.
fn area(r: *const Rect) i32 {
return r.w * r.h;
}المؤشر const للقراءة فقط
يتيح *const T للدالة قراءة بياناتك، لكن لا يتيح لها الكتابة إليها. وتحصل بذلك على السرعة من دون التخلي عن الأمان.
الشرائح هي طرق عرض أصلًا
تحمل الشريحة مثل []const u8 مؤشرًا وطولًا، لذلك تتيح مشاركة البيانات الأساسية من دون نسخها بالكامل.
اختر وفقًا للقصد
مرّر البيانات الصغيرة المخصّصة للقراءة فقط بالقيمة؛ ومرّر مؤشرًا عندما تحتاج إلى تعديل البيانات أو عندما تكون كبيرة.
تحقق سريع
تريد أن تغيّر دالة متغير المستدعي. ما شكل المعلمة الذي يتيح لها ذلك؟
مراجعة
تُنسخ القيم، ولذلك لا يمكنها تغيير أصولك؛ أما المؤشرات فتشاركها. استخدم *T للتعديل و*const T لقراءة البيانات الكبيرة بسرعة. 🎯
تعلم Zig مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «تمرير القيم مقابل المراجع» مجاني؟
نعم — نص درس «تمرير القيم مقابل المراجع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «تمرير القيم مقابل المراجع»؟
تعرّفوا إلى كيفية وصول الوسائط إلى الدالة تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تمرير القيم مقابل المراجع»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- صياغة الدوال وأنواع الإرجاع
- تمرير القيم مقابل المراجع
- دوال pub ونطاق الرؤية
- الاستدعاء الذاتي والقيم المعادة المتعددة