সুইচ, কেস, ডিফল্ট - 1

"হাই, অ্যামিগো!"

"হাই, বিলাবো! আপনাকে আবার দেখে খুব ভালো লাগছে। শুধু আপনার লেকচারগুলোই এত ভালো এবং বোধগম্য। এই জাভা মেমোরি মডেলের মতো নয়।"

"হ্যাঁ, বিলাবো জানে কিভাবে পাঠ বেছে নিতে হয়। আজ আমি আপনাকে সুইচ স্টেটমেন্ট সম্পর্কে বলতে যাচ্ছি।"

"আমি মনে করি কেউ আমাকে ইতিমধ্যে এটি সম্পর্কে বলেছে।"

"এলি করেছে। তাই, অ্যামিগো সুইচ স্টেটমেন্ট সম্পর্কে কোনো পাঠ শুনতে চায় না? হয়তো আপনি নিজের শিক্ষা শুরু করবেন?"

"না, আমি চাই, আমি চাই। আসুন সুইচ স্টেটমেন্ট সম্পর্কে শুনি।"

"ঠিক আছে। জাভাতে, একটি সুইচ স্টেটমেন্ট বলে কিছু আছে। কিছু ভেরিয়েবলের বিভিন্ন মানের উপর নির্ভর করে আপনাকে নির্দিষ্ট ক্রিয়া সম্পাদন করতে হবে তখন এটি সুবিধাজনক।"

সুইচ সহ উদাহরণ সমতুল্য কোড
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

সুইচ স্টেটমেন্ট আপনাকে কোডের পছন্দসই অংশে যেতে দেয় যদি এটিতে পাস করা ভেরিয়েবলটি কীওয়ার্ড কেস অনুসরণকারী মানের সাথে মেলে

যদি i 1 হয়, তাহলে এক্সিকিউশন "কেস 1" চিহ্নিত লাইনে যাবে।

যদি i 2 হয়, তাহলে মৃত্যুদন্ড "কেস 2" চিহ্নিত লাইনে যাবে।

যদি i 3 হয়, তাহলে মৃত্যুদন্ড "কেস 3" চিহ্নিত লাইনে যাবে।

"যদি কোনো ক্ষেত্রে কোনো লাফ না হয়, তাহলে «ডিফল্ট» ব্লকটি কার্যকর করা হয়।"

"আমি দেখতে পাচ্ছি। এবং ডানদিকে একই যুক্তি, কিন্তু যদি বিবৃতি ব্যবহার করে বাস্তবায়িত হয়?"

"হ্যাঁ।"

"এবং 'ব্রেক' শব্দের সাথে কী আছে? আপনি বলেছিলেন যে এটি শুধুমাত্র লুপে ব্যবহার করা যেতে পারে?"

"হ্যাঁ, এবং এখানে। যখন বিরতি বিবৃতি কার্যকর করা হয়, আমরা অবিলম্বে সুইচ থেকে প্রস্থান করি ।"

"কিন্তু যদি বিরতি বিবৃতিটি সরানো হয়, তাহলে সুইচের ভিতরের সমস্ত লাইন শেষ পর্যন্ত কার্যকর করা হবে।"

উদাহরণ আউটপুট (i = 1 এর জন্য) আউটপুট (i = 2 এর জন্য)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
এক
দুই
তিন
অনেক
দুই
তিন
অনেক

"আসলে, কেস হল কোডের একটি লেবেল৷ সুইচ স্টেটমেন্টে, আমরা পরবর্তী লেবেলে চলে যাই এবং সুইচের শেষ না হওয়া পর্যন্ত বা একটি বিরতি বিবৃতি না পাওয়া পর্যন্ত সমস্ত কোড কার্যকর করা শুরু করি৷"

"সুতরাং, আমরা যদি বিরতি না লিখি, তাহলে আমরা যে লাইনে ঝাঁপ দিব সেটি কার্যকর করা হবে, তারপরে বন্ধ বন্ধনী পর্যন্ত অন্যান্য সমস্ত লাইন অনুসরণ করা হবে। এটা কি ঠিক?"

"হ্যাঁ."

"কেকের টুকরো। তবে আমি যদি বিবৃতিগুলি আরও ভাল ব্যবহার করতে পছন্দ করি। তাদের এই অর্থহীন বিরতি বিবৃতি নেই।"

"এটি সত্য যে যদি বিবৃতিগুলি প্রায়শই আরও কমপ্যাক্ট হয়। তবে একটি সুইচ বিবৃতি কখনও কখনও আরও পাঠযোগ্য হয়।"

"তুলনা করা:"

সুইচ সহ উদাহরণ সমতুল্য কোড
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

"আমি বলব না যে এটি আরও পঠনযোগ্য।"

"ঠিক আছে, কিন্তু এই উদাহরণ সম্পর্কে কি?"

সুইচ সহ উদাহরণ সমতুল্য কোড
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

"বিলাবো, আপনার উদাহরণটি পুরোপুরি সঠিক বলে মনে হচ্ছে না। তাই, যদি আমি রিটার্ন ব্যবহার করি তবে আমি বিরতি বিবৃতিটি বাদ দিতে পারি?"

"এটা ঠিক। একটি রিটার্ন স্টেটমেন্ট অবিলম্বে পদ্ধতি থেকে প্রস্থান করবে।"

"এটা মনে হচ্ছে যদি বিবৃতি সবসময় আরো কম্প্যাক্ট হয়. কিন্তু সুইচ বিবৃতি এই সময় আরো পঠনযোগ্য হতে পরিণত হয়েছে."

"উফ, শেষ পর্যন্ত।"

"আরও একটি জিনিস। আপনাকে শেষ পর্যন্ত ডিফল্ট লিখতে হবে না। আপনি যদি তা না করেন, তাহলে লেবেলগুলোর কোনোটিই না মিললে কিছুই হবে না।"

"আহ, ঠিক। যদি-অন্যরকম, তবে পাঠযোগ্য-অনেক বেশি পাঠযোগ্য!"

"দারুণ। আমি খুশি যে আপনি আমার পাঠ পছন্দ করেছেন।"

"ওহ, আমি প্রায় ভুলেই গিয়েছিলাম। প্রাথমিকভাবে, আপনি শুধুমাত্র সুইচ স্টেটমেন্টে আদিম প্রকার এবং enums ব্যবহার করতে পারেন। কিন্তু এখন তারা স্ট্রিংগুলির জন্য সমর্থন যোগ করেছে।"

"মানে আমি এটা লিখছি?"

উদাহরণ
public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

"হ্যাঁ। সুবিধাজনক, তাই না?"

"হ্যাঁ। সুইচ স্টেটমেন্টগুলি দুর্দান্ত!"