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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।