0Pricing
Zig Academy · درس

قراءة وسيطات سطر الأوامر

حلّل argv باستخدام مخصّص ذاكرة

قراءة وسيطات سطر الأوامر درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.

لماذا تهم الوسائط

تتفاعل أداة CLI حقيقية مع ما يكتبه المستخدم بعد اسمها. تُسمّى هذه الكلمات وسائط سطر الأوامر، وقراءتها هي الخطوة الأولى. 🛠️

لا يخفي Zig عنك شيئًا

تمنحك لغات أخرى متغير argv سحريًا. أما Zig فيبقى صريحًا: تطلب الوسائط بنفسك من مساحة الأسماء std.process.

const std = @import("std");

تحتاج الوسائط إلى مخصّص ذاكرة

قد يتطلب فك ترميز الوسائط تخصيص ذاكرة، لذلك يطلب منك Zig تحديد allocator مسبقًا. لا يحدث أي تخصيص من وراء ظهرك.

var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const a = gpa.allocator();

يعيد argsAlloc مقطعًا

استدعِ std.process.argsAlloc مع مخصّص الذاكرة لديك. يعيد مقطعًا من السلاسل النصية، واحدة لكل وسيطة، وتكون ملكيتها كاملة لك.

const args = try std.process.argsAlloc(a);

حرّر ما خصّصته

بما أن هذا المقطع ملكك، يجب أن تحرّره باستخدام argsFree. ويضمن وضع defer بعد الاستدعاء مباشرةً أن تتم عملية التنظيف تلقائيًا.

defer std.process.argsFree(a, args);

الوسيطة الأولى هي البرنامج

وفقًا للعرف، تكون args[0] مسار برنامجك نفسه، وليست إدخالًا من المستخدم. تبدأ القيم الفعلية التي تهمك عند الفهرس 1.

const program = args[0];

احسب عدد الوسائط التي حصلت عليها

يحمل المقطع طوله بنفسه، لذا يخبرك args.len بعدد الوسائط التي وصلت. تحقّق من ذلك قبل الوصول إلى أي فهرس.

if (args.len < 2) return error.MissingArgument;

كرّر على المدخلات

كرّر على قيم المستخدم من خلال أخذ مقطع يتجاوز اسم البرنامج. تزور حلقة for على args[1..] كل وسيطة بالترتيب.

for (args[1..]) |arg| {
    std.debug.print("{s}\n", .{arg});
}

كل وسيطة هي بايتات

كل وسيطة هي []const u8، أي مقطع من البايتات. ومن هنا تصبح مقارنة إحداها أو تحليلها مجرد عمل عادي على سلاسل Zig النصية.

if (std.mem.eql(u8, arg, "--help")) {}

حوّل النص إلى أرقام

تصل الوسائط في صورة نص. للحصول على رقم، حلّل النص باستخدام std.fmt.parseInt، الذي يفشل بوضوح إذا لم يكن النص عددًا صحيحًا صالحًا.

const n = try std.fmt.parseInt(i32, args[1], 10);

بديل باستخدام مكرّر

هل تفضّل المعالجة المتدفقة؟ يمنحك std.process.argsWithAllocator مكرّرًا تتقدّم فيه باستخدام next()، وهو مفيد عند معالجة الوسائط واحدةً تلو الأخرى.

var it = try std.process.argsWithAllocator(a);
defer it.deinit();

تحقّق سريعًا

فكّر فيما يوجد في مقدمة مقطع الوسائط.

مراجعة

قرأت الوسائط باستخدام argsAlloc، وحرّرتها باستخدام argsFree، وتجاوزت args[0]، وحلّلت النص إلى قيم. أصبحت أداة CLI الخاصة بك تستقبل مدخلات مستخدمها الآن. 🎯

الأسئلة الشائعة

هل درس «قراءة وسيطات سطر الأوامر» مجاني؟

نعم — نص درس «قراءة وسيطات سطر الأوامر» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.

ماذا ستتعلم في «قراءة وسيطات سطر الأوامر»؟

حلّل argv باستخدام مخصّص ذاكرة تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟

لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «قراءة وسيطات سطر الأوامر»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟

نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. قراءة وسيطات سطر الأوامر
  2. قراءة الملفات وstdin
  3. كتابة المخرجات ورموز الخروج
  4. تغليف الملف التنفيذي وإصداره
← العودة إلى Zig Academy