সরাসরি প্রধান সামগ্রীতে চলে যান

Rust ল্যাঙ্গুয়েজে if let ব্যবহার করে কোড ছোট করার নিয়ম

Introduction

সবাইকে স্বাগতম! আজকের এই কন্টেন্টে আমরা Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের একটি চমৎকার ফিচার if let সম্পর্কে জানব। এর আগের ভিডিও বা আলোচনায় হয়তো আপনারা match স্টেটমেন্ট সম্পর্কে জেনেছেন। match খুব শক্তিশালী হলেও মাঝে মাঝে এটি কোডকে অনেক বড় বা জটিল করে ফেলে, বিশেষ করে যখন আমরা শুধু একটি নির্দিষ্ট কন্ডিশন চেক করতে চাই। এই সমস্যা সমাধান করতেই Rust-এ if let আনা হয়েছে। এটি আপনার কোডকে আরও ছোট, পরিষ্কার এবং পড়তে সহজ করে তোলে। মূলত কম পরিশ্রমে বেশি কাজ করার জন্যই এই টেকনিকটি ব্যবহার করা হয়।


১. if let কি এবং কেন ব্যবহার করবেন?

প্রথমে আমরা বুঝব কেন আমাদের if let দরকার। ধরুন আপনার কাছে একটি Option টাইপ ভ্যালু আছে (যা হয় Some হবে অথবা None)। আপনি শুধু চাচ্ছেন যদি ভ্যালুটি Some হয় তবেই কিছু একটা প্রিন্ট করবেন, আর None হলে কিছুই করবেন না।

ভিডিও রেফারেন্স: [00:24]

বিস্তারিত আলোচনা: সাধারণত আমরা যখন match ব্যবহার করি, তখন আমাদের সবকটি সম্ভাবনা (যেমন Some এবং None উভয়ই) হ্যান্ডেল করতে হয়। যদি আমরা None এর জন্য কিছু করতে নাও চাই, তাও আমাদের কোডে সেটি লিখতে হয়, নাহলে Rust কম্পাইলার এরর দেয়। একে বলা হয় Exhaustive checking। কিন্তু if let ব্যবহার করলে আমরা শুধু যেটা দরকার সেটা নিয়েই কাজ করতে পারি এবং বাকিগুলো ইগনোর করতে পারি।

সহজ কথায় কঠিন শব্দ:

  • Concise (কনসাইজ): অল্প কথায় বা ছোট করে কিছু বলা।

  • Verbose (ভারবোস): যখন একই কাজ করতে অনেক বেশি কোড লিখতে হয়।

  • Pattern Matching (প্যাটার্ন ম্যাচিং): ডাটা কোন ছাঁচে বা প্যাটার্নে আছে তা খুঁজে বের করা।


২. কোডের তুলনা: match বনাম if let

নিচের কোডটি দেখলে আপনি সহজেই পার্থক্য বুঝতে পারবেন।

ভিডিও রেফারেন্স: [01:46]

কোড উদাহরণ:

Rust

// match ব্যবহার করে (পুরানো পদ্ধতি)
let config_max = Some(3u8);
match config_max {
    Some(max) => println!("The maximum is configured to be {}", max),
    _ => (), // এখানে কিছুই করার নেই, তাও এটা লিখতে হচ্ছে
}

// if let ব্যবহার করে (নতুন ও সহজ পদ্ধতি)
let config_max = Some(3u8);
if let Some(max) = config_max {
    println!("The maximum is configured to be {}", max);
} 

কোড ব্যাখ্যা: ১. match এর ক্ষেত্রে আমাদের _ => () লিখতে হয়েছে যাতে কম্পাইলার খুশি থাকে। ২. if let Some(max) = config_max লাইনের অর্থ হলো— যদি config_max এর ভেতর কোনো ভ্যালু থাকে (Some), তবে সেই ভ্যালুটিকে max ভেরিয়েবলে রাখো এবং নিচের ব্র্যাকেটের কাজটুকু করো। ৩. যদি ভ্যালু না থাকে (None), তবে এই কোড ব্লকটি স্রেফ এড়িয়ে যাবে। এতে কোড অনেক পরিষ্কার দেখায়।


৩. else এর ব্যবহার

আপনি চাইলে if let এর সাথে else ও ব্যবহার করতে পারেন। যদি প্যাটার্ন ম্যাচ না করে তবে কি হবে তা এখানে বলে দেওয়া যায়।

ভিডিও রেফারেন্স: [02:14]

কোড উদাহরণ:

Rust

let config_max: Option<u8> = None;

if let Some(max) = config_max {
    println!("Max value is: {}", max);
} else {
    println!("কোন ভ্যালু পাওয়া যায়নি (None)");
} 

আমার চিন্তা: এটি অনেকটা সাধারণ if-else এর মতোই কাজ করে, তবে এটি স্পেশাল কারণ এটি একই সাথে ভ্যালু চেক করে এবং ভ্যালুটিকে বের করে (Extract) একটি ভেরিয়েবলে জমা রাখে।


৪. if let এর সুবিধা ও অসুবিধা

সুবিধা:

  • কোড টাইপিং কম করতে হয়।

  • অপ্রয়োজনীয় কোড (Boilerplate) কমে যায়।

  • কোড দেখতে সুন্দর ও প্রফেশনাল লাগে।

অসুবিধা:

  • এখানে আপনি match এর মতো "Exhaustive checking" সুবিধা হারাবেন। অর্থাৎ, আপনি যদি ভুলে কোনো কন্ডিশন বাদ দিয়ে যান, কম্পাইলার আপনাকে মনে করিয়ে দেবে না। তাই যখন আপনার সবকটি সম্ভাবনা চেক করা জরুরি, তখন match ব্যবহার করাই বুদ্ধিমানের কাজ।

সহজ কথায় কঠিন শব্দ:

  • Boilerplate (বয়লারপ্লেট): কোডের এমন অংশ যা বারবার লিখতে হয় কিন্তু মূল কাজের সাথে সরাসরি যুক্ত নয়।

  • Syntax Sugar (সিনট্যাক্স সুগার): প্রোগ্রামিং ল্যাঙ্গুয়েজের এমন একটি সহজ নিয়ম যা ব্যাকএন্ডে কঠিন কাজই করে কিন্তু প্রোগ্রামারের জন্য লেখা সহজ করে দেয়।


৫. বিশ্লেষণ ও বাস্তবতা

কন্টেন্ট ক্রিয়েটর পিযুষ গর্গ এখানে বোঝাতে চেয়েছেন যে, Rust শিখতে হলে শুধু থিওরি পড়লে হবে না, কোড প্র্যাকটিস করতে হবে। if let হলো Rust-এর একটি "সিনট্যাক্স সুগার"। যখন আপনি বড় কোনো প্রজেক্টে কাজ করবেন, তখন দেখবেন আপনার কোডে অনেক জায়গায় শুধু একটি নির্দিষ্ট কন্ডিশন চেক করতে হচ্ছে, সেখানে match ব্যবহার করা মানে হলো খামোখা কোড বড় করা।

বাস্তবসম্মত ধারণা ও পরামর্শ:

  • কখন ব্যবহার করবেন: যখন আপনার শুধু একটি নির্দিষ্ট ডাটা প্যাটার্ন নিয়ে কাজ করার দরকার এবং বাকিগুলো নিয়ে মাথা ঘামানোর প্রয়োজন নেই।

  • বিকল্প: যদি আপনার ৩-৪টি ভিন্ন ভিন্ন প্যাটার্ন চেক করতে হয় (যেমন: Red, Green, Blue), তবে if let ব্যবহার না করে match ব্যবহার করুন। কারণ match নিশ্চিত করে যে আপনি কোনো রঙ মিস করছেন কি না।

  • পরামর্শ: শুরুতে কঠিন মনে হলেও নিজে হাতে কোডগুলো রান করান। Option<T> এবং Enum এর সাথে if let এর কম্বিনেশন Rust-এ আপনার কাজকে অনেক গতিশীল করবে।

পরবর্তী ধাপে Rust-এর প্যাকেজ ম্যানেজমেন্ট বা Cargo এবং Crates সম্পর্কে জানা আরও জরুরি, যা আপনার কোডকে অন্যদের সাথে শেয়ারযোগ্য করে তুলবে। প্র্যাকটিস চালিয়ে যান!

[

if let Concise Control Flow | Rust Book

Piyush Garg · 1.9K views

](http://www.youtube.com/watch?v=tRJEnuDAf10)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...