در 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.
در این تمرین، کدی مینویسید که به یک شرکت تابلوهای تبلیغاتی کمک میکند پیامهای سفارشی برای تابلوهایش بسازد.
تابع buildSign(occasion, name) را پیادهسازی کنید که یک رشته را به عنوان پارامتر occasion و رشتهای را که اسم یک شخص در خود دارد به عنوان پارامتر name میپذیرد.
این دو پارامتر در یک رشتهی قالبی جای میگیرند تا پیام روی تابلو تولید شود.
buildSign('Birthday', 'Rob');
// => "Happy Birthday Rob!"
تابع buildBirthdaySign(age) را پیادهسازی کنید که یک سن را میپذیرد و بر اساس آن سن، بخشی از پیام روی تابلو را مشخص میکند.
اگر سن ۵۰ یا بیشتر باشد، تابلو کاربر را mature خطاب میکند؛ در غیر این صورت او را young خطاب میکند.
خروجی دقیق مورد انتظار در زیر نشان داده شده است:
buildBirthdaySign(50);
// => "Happy Birthday! What a mature fellow you are."
buildBirthdaySign(45);
// => "Happy Birthday! What a young fellow you are."
تابع graduationFor(name, year) را پیادهسازی کنید که یک اسم را به عنوان پارامتر رشتهای و یک سال را به عنوان پارامتر عددی میگیرد و با درج مقادیر در رشته، عبارتی برای تابلو میسازد. این عبارت از یک خط جدید برای جدا کردن دو خط پیام استفاده میکند.
graduationFor('Hannah', 2022);
/* => "Congratulations Hannah!
Class of 2022"
*/
تابع costOf(sign, currency) را پیادهسازی کنید که محتوای تابلو را در قالب یک رشته و واحد پول را در قالب رشتهای دیگر میگیرد.
قیمت پایهی تابلو، ۲۰ واحد از واحد پول دادهشده است. علاوه بر آن، هر حرف ۲ هزینه دارد. (فاصلهها نیز در محاسبه لحاظ میشوند.)
عبارتی که برگردانده میشود، هزینهی ساخت تابلو را در بر میگیرد که با دو رقم اعشار نوشته میشود و پس از آن رشتهی واحد پول میآید.
costOf('Happy Birthday Rob!', 'dollars');
// => "Your sign costs 58.00 dollars."
در Exercism ثبتنام کنید تا JavaScript را همراه با 37 مفهوم159 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.