تعلّم البرمجة بلغة كوتلن (20): الكلمة المفتاحية in

تعلّم البرمجة بلغة كوتلن (20): الكلمة المفتاحية in
أستمع الى المقال

رأينا في درس حلقة التكرار for والنطاقات، كيف يمكننا استخدام الكلمة المفتاحية in. إلى جانب ذلك، تستخدم in في التأكد عما إذا كان عنصر ينتمي لمجموعة من القيم أم لا. كأن نتأكد من أن سلسلة نصية من المحارف String، تحتوي على حرف معين.

استخدام in في الحلقة for وفي التأكد من انتماء العناصر:

عند استخدام in في الحلقة for، تعمل على إسناد عناصر مجموعة القيم في متغير الحلقة، بواقع عنصر واحد في كل دورة للحلقة for. أما في حالة استخدامها مع التعبير الشرطي if مثلًا، ستعمل على التأكد مما إذا كانت مجموعة القيم تحتوي على العنصر أم لا. وسيكون الناتج قيمة منطقية، true أو false.

في الشفرة التالية سنرى in تعمل بطريقة مختلفة حسب مكان وجودها:

في الشفرة أعلاه، أعلنا أولًا عن متغير باسم randomChars، من النوع String وأسندنا إليه محارف عشوائية. ثم متغير نصي آخر من النوع var باسم helloText وأسندنا إليه علامات تنصيص فارغة (بدون مسافة لأن المسافة تعتبر محرف إذا وضعناها بين علامتي تنصيص مزدوجة).

ما نريده هو إيجاد المحارف التي تتواجد قبل المحارف في السلسلة النصية التي يُمثلها المتغير randomChars. ثم إضافتها حرفًا بعد حرف إلى المتغير الفارغ helloText. ولهذا السبب جعلنا المتغير helloText من النوع var، ليقبل تغيير قيمته.

للقيام بذلك، نحتاج الحلقة for، لتقوم بالدوران على عناصر القيمة النصية للمتغير randomChars، وإسناد عنصر واحد في كل دورة إلى المتغير الخاص بها char، باستخدام الكلمة المفتاحية in. 

في الدورة الأولى للحلقة، سيمثل المتغير char الحرف الإنجليزي الكبير (I)، ثم بين الأقواس المعقوفة، سيعمل على إنقاص 1 من قيمة الحرف I الذي يُمثله المتغير char، كما شرحناه في الدرس السابق. وسيضيف ناتج العملية الحسابية وهو الحرف الكبير (H)إلى المتغير helloText. وهكذا ستستمر الحلقة بالدوران حتى آخر حرف أو رمز في المتغير randomChars.

عند إنقاص رقم 1 من كل حرف أو رمز في السلسلة النصية randomChars، ستكون نتيجة العملية هي الجملة: !Hello World. وهذه هي القيمة التي سيُمثلها المتغير helloText، بعد انتهاء الحلقة for من عملها.

ثم أعلنا عن متغير جديد من النوع Char باسم char، أسندنا له حرف واحد نريد البحث عنه في السلسلة النصية helloText، بعد أن يتم تعبئتها في الحلقة for.

في الواقع، لا نستطيع الإعلان عن متغيرين بنفس الاسم في نفس الدالة ()main. ولكن هنا استطعنا ذلك، لأن متغير الحلقة for والذي يحمل اسم char أيضًا، خاص بها وليس له أي تأثير خارجها.

استخدام in في كتلة if:

الآن في كتلة if، نبحث عما إذا كانت قيمة هذا المتغير ‘H’، متواجدة في محارف helloText، باستخدام الكلمة المفتاحية in. ولأن كتلة if تحتاج إلى نتيجة منطقية true أو false، ما ستقوم به الكلمة in هو البحث في محارف السلسلة النصية helloText، والعودة بنتيجة true إذا وجدت الحرف، أو false إذا لم تجده.

وﻷن الحرف موجود في قيمة helloText، ستكون النتيجة true، بالتالي ستنفذ if السطر الذي يوجد بعدها، والذي سيطبع جملة نصية باستخدام طريقة القوالب النصية في كوتلن. (لم نضع أقواس معقوفة لكتلة if ﻷن ما بعدها عبارة عن سطر واحد فقط). في نهاية البرنامج سيتم طباعة الجملة:

The letter H is a member of “Hello World!”

هنا نرى لـ in عمل مختلف عما قامت به سابقًا في الحلقة for، حيث كان عملها إسناد قيمة العناصر في كل دورة إلى متغير الحلقة.

استخدام معامل النفي (!) مع in:

عند استخدام in مع النطاقات أو كتلة if، يمكننا استخدامها مع معامل النفي (!)، هكذا: in!. عند استخدامها بهذه الطريقة، تكون النتيجة العائدة true إذا لم يكن العنصر متواجدًا في النطاق أو مجموعة القيم التي نبحث بها.

كمثال، إذا كان لدينا متغيرات تُمثل قيم حرفية من النوع Char، وأردنا معرفة ما إذا كان الحرف متواجدًا في النطاق ‘1’ حتى ‘9’ أم لا، سنقوم بإنشاء دالة على النحو التالي:

تستقبل الدالة معامل واحد من النوع Char، ثم تبحث عنه في النطاق من ‘0’ إلى ‘9’، هذه ليست أرقام هنا ولكنها محارف لأننا وضعناها بين علامتي تنصيص مفردة. إذا كان الحرف موجوداً في النطاق، ستعود بالقيمة false. أما إذا لم يكن موجودًا، فستعود بالقيمة true. وهذا عكس نتيجة in إذا استخدمناها بمفردها بدون معامل النفي (!).

عند استدعاء الدالة في الدالة ()main، كما يلي:

ستكون نتيجة طباعة السطر الأول والثالث false، ﻷن ‘1’ و ‘3’ موجودان في النطاق، والثاني true ﻷن الحرف ‘z’ غير موجود في النطاق.

لا ينحصر استخدام الكلمة المفتاحية in في ما ذكرناه في هذا الدرس فقط، ولكن لديها استخدامات مع أنواع بيانات أخرى. ولأننا لم نستعرض هذه الأنواع بعد، سنشرح in في أثناء استخدامنا لها في الدروس القادمة.

هذا الدرس هو جزء من سلسلة تعليم مبادئ البرمجة بلغة كوتلن. لمُتابعة الدروس منذ البداية ومُشاهدة فهرس المحتويات يمكنك الانتقال إلى الدرس الأول من هنا.

هل أعجبك المحتوى وتريد المزيد منه يصل إلى صندوق بريدك الإلكتروني بشكلٍ دوري؟
انضم إلى قائمة من يقدّرون محتوى إكسڤار واشترك بنشرتنا البريدية.