لافتات مخصصة

لافتات مخصصة

تمرين تعلّمي

مقدمة

في JavaScript، تتيح لك السلاسل النصية القالبية تضمين تعبيرات داخل السلاسل النصية، وهو ما يُعرف أيضًا بالتداخل النصي. تُوسّع هذه الإمكانية وظائف الكائن العام المدمج String.

يمكنك إنشاء السلاسل النصية القالبية في JavaScript بتغليف النص بعلامات الاقتباس الخلفية. فهي لا تتيح للنص أن يتضمّن أسطرًا جديدة ومحارف خاصة أخرى فحسب، بل تتيح لك أيضًا تضمين المتغيرات وتعبيرات أخرى.

const num1 = 1;
const num2 = 2;

`Adding ${num1} and ${num2} gives ${num1 + num2}.`;
// => Adding 1 and 2 gives 3.

في المثال أعلاه، تُستخدم علامات الاقتباس الخلفية - (``) - لتمثيل سلسلة نصية قالبية. أما ${...} فهي العنصر النائب المستخدم للاستبدال. وأي أنواع غير نصية تُحوَّل ضمنيًا إلى سلاسل نصية. ويُغطّي هذا الموضوع مفهوم تحويل الأنواع. ويمكن استخدام جميع أنواع التعبيرات مع السلاسل النصية القالبية.

const track = 'JavaScript';

`This track on exercism.org is ${track.toUpperCase()}.`;
// => This track on exercism.org is JAVASCRIPT.

عندما تحتاج إلى تنسيق السلاسل النصية على عدة أسطر:

`This is an example of using template
strings to accomplish multiple
lines`;

مع إمكانات الاستبدال المتاحة، يمكنك أيضًا إدخال منطق إلى العملية لتحديد الشكل الذي ينبغي أن تكون عليه السلسلة النصية الناتجة.

مثال على ذلك تضمين عامل ثلاثي. هذا العامل صيغة مختصرة لكتابة عبارة if/else. وصيغته هي condition ? consequent-expression : alternative-expression. إذا كان الشرط صحيحًا منطقيًا، فستُرجع القيمة الواقعة على يسار النقطتين. وإلا فإن نتيجة التعبير الثلاثي هي القيمة الواقعة على يمين النقطتين.

const grade = 95;

`You have ${grade > 90 ? 'passed' : 'failed'} the exam.`;
// => You have passed the exam.

التعليمات

في هذا التمرين ستكتب كودًا يساعد شركة لافتات على إنشاء رسائل مخصّصة للافتاتها.

1. أنشئ لافتة مناسبة

نفّذ الدالة buildSign(occasion, name) التي تقبل سلسلة نصية بوصفها المعامل occasion وسلسلة نصية تحمل اسم شخص بوصفه المعامل name. سيُضمّن المعاملان في سلسلة نصية قالبية لإخراج الرسالة على اللافتة.

buildSign('Birthday', 'Rob');
// => "Happy Birthday Rob!"

2. أنشئ لافتة عيد ميلاد

نفّذ الدالة buildBirthdaySign(age) التي تقبل عمرًا وتحدّد، بناءً على هذا العمر، جزءًا من الرسالة على اللافتة. إذا كان العمر 50 أو أكثر، ستشير اللافتة إلى المستخدم بصفته mature، وإلا فستشير إليه بصفته young. المخرجات المتوقعة بالضبط موضّحة أدناه:

buildBirthdaySign(50);
// => "Happy Birthday! What a mature fellow you are."

buildBirthdaySign(45);
// => "Happy Birthday! What a young fellow you are."

3. أنشئ لافتة تخرّج

نفّذ الدالة graduationFor(name, year) التي تأخذ اسمًا بوصفه معاملًا من نوع سلسلة نصية وسنة بوصفها معاملًا من نوع عدد، وتستخدم الإدراج داخل السلسلة النصية لإنشاء عبارة للافتة تفصل بين سطري الرسالة بسطر جديد.

graduationFor('Hannah', 2022);
/* => "Congratulations Hannah!
       Class of 2022"
*/

4. احسب تكلفة اللافتة

نفّذ الدالة costOf(sign, currency) التي تأخذ سلسلة نصية تحمل محتوى اللافتة وسلسلة نصية تمثّل العملة. سعر اللافتة الأساسي هو 20 بالعملة المعطاة. بالإضافة إلى ذلك، يكلّف كل حرف مبلغ 2. (تُحتسب المسافات البيضاء ضمن الحساب.) تشمل العبارة المُرجَعة تكلفة إنشاء اللافتة، مكتوبةً برقمين بعد الفاصلة العشرية، متبوعةً بالسلسلة النصية للعملة.

costOf('Happy Birthday Rob!', 'dollars');
// => "Your sign costs 58.00 dollars."
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
JavaScript Exercism

مستعد لبدء لافتات مخصصة؟

سجّل في Exercism لتتعلّم وتتقن JavaScript عبر 37 مفهومًا159 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.