অনেক ক্ষেত্রে, আমাদের একটি ফাংশন দ্বারা প্রত্যাবর্তিত কিছুর মান যাচাই করতে হবে এবং এই মানের উপর ভিত্তি করে শর্তসাপেক্ষ অপারেশন করতে হবে। তাই আমাদের কোড নিচে দেওয়া হল -
// Some method or function return_type foo(Params) // Call function with Params and // store return in var1 auto var1 = foo(Params); if (var1 == /* some value */) { //Perform Something } else { //Perform Something else }
সব শর্তসাপেক্ষ if-else ব্লকে শুধু সাধারণ বিন্যাস অনুসরণ করুন। প্রথমে একটি ঐচ্ছিক প্রাথমিক বিবৃতি আছে যা ভেরিয়েবল সেট আপ করে, তারপর if-else ব্লক। সুতরাং সাধারণ if-else ব্লকটি নিম্নরূপ দেওয়া হল -
init-statement if (condition) { // Perform or Do Something } else { // Perform or Do Something else }
C++17-এ init স্টেটমেন্টটিকে চিহ্নিত করা হয় বা একটি ইনিশিয়ালাইজার বলা হয় এবং আমরা এটিকে সরাসরি if-else ব্লকে নিম্নলিখিত পদ্ধতিতে রাখতে পারি
if (init-statement; condition) { // Perform Something } else { // Perform Something else }
শর্তযুক্ত ভেরিয়েবলের সুযোগ বর্তমান if-else ব্লকের মধ্যে সীমাবদ্ধ বা সীমাবদ্ধ। এটি আমাদের অন্য শর্তসাপেক্ষ ব্লকে একই নামের শনাক্তকারীকে পুনরায় ব্যবহার করার অনুমতি দেয়।
if (auto var1 = foo(); condition) { ... } else{ ... } // Another if-else block if (auto var1 = bar(); condition) { .... } else { .... }
একই ক্ষেত্রে সুইচ কেস ব্লক পরিবর্তন বা আপডেট করা হয়েছে। আমরা এখন সুইচ বন্ধনীর ভিতরে একটি প্রাথমিক অভিব্যক্তি রাখতে পারি।
প্রাথমিক বিবৃতির পরে কেসগুলি পরীক্ষা করার জন্য কোন ভেরিয়েবল প্রয়োগ করা হচ্ছে তা আমাদের নির্দিষ্ট করতে হবে
switch (initial-statement; variable) { .... // cases }
একটি সম্পূর্ণ প্রোগ্রাম
// Program to explain or demonstrate init if-else // feature introduced in C++17 #include <iostream> #include <cstdlib> using namespace std; int main() { // Fix or set up rand function to be implemented // later in program srand(time(NULL)); // Before C++17 int I = 2; if ( I % 2 == 0) cout << I << " is even number" << endl; // After C++17 // if(init-statement; condition) if (int I = 4; I % 2 == 0 ) cout<< I << " is even number" << endl; // Switch statement // switch(init;variable) switch (int I = rand() % 100; I) { default: cout<< "I = " << I << endl; break; } }