تعلّم البرمجة بلغة كوتلن (15): القوالب النصية String Templates

تعلّم البرمجة بلغة كوتلن (15): القوالب النصية String Templates
أستمع الى المقال

شرحنا في درس مرحبًا بالعالم، كيف يمكن ارسال جملة نصية عبارة عن سلسلة من المحارف Strings – والتي شرحناها بدورها في درس أنواع البيانات – إلى دالة الطباعة ()println، لطباعتها على الشاشة. ثم رأينا كيف استبدلنا إرسال نص مباشرة إلى دالة الطباعة، بوضعه في متغير في درس المتغيرات والقيم، فيما يعرف بالقوالب النصية.

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

ما هي القوالب النصية:

هي طريقة برمجية لإنشاء سلسلة من المحارف النصية Strings بطريقة تجعل من الشفرة أكثر تنظيمًا وقابلية للقراءة.

كمثال، إذا كان لدينا متغير اسمه language يُمثل قيمة نصية ولتكن “Kotlin”، ونريد وضع قيمة المتغير داخل جملة نصية قبل إرسالها لدالة الطباعة، يمكننا فعل التالي:

نحن هنا استخدمنا الرمز (+) لدمج النص وقيمة المتغير فيما يعرف بـ String concatenation في لغات أخرى مثل جافا. ستعمل هذه الطريقة في كوتلن أيضًا، ويتم طباعة عبارة: !It is fun to learn Kotlin.

ولكن إذا كان لدينا أكثر من متغير، فحينها سنحتاج إلى المزيد والكثير من علامات (+) وحتى المسافات الفارغة كالتي وضعناها بعد كلمة learn أعلاه، مما قد يسبب الأخطاء. أراحتنا كوتلن من كل هذا الإزعاج، وقدمت لنا القوالب النصية.

إذًا سنعدل على الشفرة أعلاه، كالتالي:

كما نرى، أصبحت الشفرة أوضح من السابق بدون رموز غير ضرورية. فقط الجديد هو وضع علامة الدولار ($) يسار اسم المتغير، حتى يفهم مترجم كوتلن أن هذا متغير ويعوض قيمته في مكان المتغير.

التعابير Expression داخل القوالب النصية:

عند التعامل مع كلمة واحدة لمتغير ما في القوالب النصية، يمكننا الاكتفاء بعلامة الدولار. ولكن عند استخدام تعبير يعود بقيمة داخل القوالب النصية نستخدم الأقواس المعقوفة { } للإحاطة بالتعبير، كأن نجري عملية حسابية، كالتالي:

سيعمل المترجم أولًا على العملية الحسابية ثم يدمج الناتج مع العبارة النصية. ليتم طباعتها هكذا: The sum of x and n is: 23.

وبالطبع يمكننا استخدام تعبير if الشرطي داخل هذه القوالب. كالتالي:

هنا أيضًا سينفذ المترجم أولًا التعبير if ويدمج الناتج مع العبارة النصية. ليتم طباعتها هكذا: Max number is: 15.

تخطي الرموز باستخدام الرمز ( \ ):

نحن نعرف، بأننا يجب أن نضع المحارف بين علامتي تنصيص ليعتبرها المترجم String. وأيضًا علامتي التنصيص المزدوجة هي التي تخبر المترجم ببداية ونهاية العبارة النصية. ولكن ماذا إذا أردنا وضع علامة التنصيص نفسها داخل العبارة ليتم طباعتها كما هي كباقي المحارف؟

في هذه الحالة يمكننا وضع هذا الرمز ( \ ) قبل هذه العلامة لنخبر المترجم بأن عليه دمجها مع باقي العبارة، كالتالي:

عند تنفيذ البرنامج أعلاه، سينتج لنا العبارة:

Learning ”Kotlin” means avoiding boilerplate code in ”Java”!

فكما نرى أعتبر مترجم كوتلن كل علامات التنصيص التي وضعنا هذا الرمز ( \ ) قبلها، جزء من العبارة وطبعها كما هي. بالمثل سنفعل مع هذا الرمز ( $ ) إذا أردنا دمجه مع العبارة وعدم إعتبار الكلمة التي تأتي بعده متغير.

فمثلًا إذا وضع الرمز ( \ ) قبل الرمز ( $ ) في العبارة السابقة: 

سيتم طباعتها كالتالي:

Learning $newLanguage means avoiding boilerplate code in $oldLanguage!

في هذه الحالة أيضًا، تخطى مترجم كوتلن الرمز ( $ ) ولم يعتبر الكلمات التي أتت بعده متغيرات، لذا دمجها مع العبارة وطبعها كما هي.

تخطي الرموز باستخدام ثلاث علامات تنصيص ( ” ” ” ):

طريقة أخرى لدمج الرموز مع العبارات في القوالب النصية. فمثلًا يمكننا إعادة كتابة الشفرة أعلاه بدون الرمز ( \ )، كالتالي:

لتكون نتيجة الطباعة كما نرى في الصورة التالية من برنامج IntelliJ IDEA:

كما نرى في الصورة، بدأنا العبارة بثلاث علامات تنصيص ونهيناها بثلاث أخرى. لذا، طبع المترجم علامات التنصيص الداخلية كما هي. ونلاحظ أنه لم يتم دمج المتغيرات مع العبارة، هذا لأنه لتخطي رمز المتغيرات ( $ )، علينا كتابته الرمز ( \ ) قبله.

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

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