এই সবচেয়ে জনপ্রিয় উপায় পরীক্ষণ একটি মান একটি অ্যারের মধ্যে হল (এটা আমার মনে হচ্ছে):
for (int x : array)
{
if (x == value)
return true;
}
return false;
তবে, যে বইটি আমি বহু বছর আগে পড়েছি, সম্ভবত, রাইথ বা ডিজকস্ট্রায় পড়েছিল, বলা হয়েছিল যে এই স্টাইলটি আরও ভাল (ভিতরে বাইরে বেরোনোর সাথে কিছুক্ষণের সাথে তুলনা করলে):
int i = 0;
while (i < array.length && array[i] != value)
i++;
return i < array.length;
এইভাবে অতিরিক্ত প্রস্থান শর্তটি লুপ আক্রমণকারীটির স্পষ্ট অংশে পরিণত হয়, লুপের ভিতরে কোনও লুকানো শর্ত থাকে না এবং প্রস্থান হয় না, সবকিছু কাঠামোগত-প্রোগ্রামিং পদ্ধতিতে আরও সুস্পষ্ট এবং আরও বেশি। আমি সাধারণত এই আধুনিক প্যাটার্ন যখনই সম্ভব অগ্রাধিকার এবং ব্যবহৃত for
থেকে মাত্র পুনরুক্তি করতে -loop a
করতে b
।
এবং তবুও আমি বলতে পারি না যে প্রথম সংস্করণটি কম স্পষ্ট। সম্ভবত এটি আরও পরিষ্কার এবং বোঝা সহজ, কমপক্ষে খুব প্রাথমিকভাবে। সুতরাং আমি এখনও নিজেকে জিজ্ঞাসা করছি কোনটি ভাল?
হতে পারে যে কোনও একটি পদ্ধতির পক্ষে একটি ভাল যুক্তি দিতে পারেন?
আপডেট: এটি একাধিক ফাংশন রিটার্ন পয়েন্ট, ল্যাম্বডাস বা প্রতি সেয়ারে অ্যারেতে কোনও উপাদান সন্ধানের প্রশ্ন নয়। এটি একটি একক বৈষম্যের চেয়ে আরও জটিল আক্রমণকারীদের সাথে কীভাবে লুপগুলি লিখবেন সে সম্পর্কে এটি।
আপডেট: ঠিক আছে, আমি সেই লোকদের বক্তব্য দেখছি যারা উত্তর দিয়েছে এবং মন্তব্য করেছে: আমি এখানে ফোরচ লুপটি মিশ্রিত করেছি, যা নিজেই ইতিমধ্যে কিছুটা লুপের চেয়ে আরও স্পষ্ট এবং পঠনযোগ্য। আমার এটা করা উচিত হয়নি। তবে এটিও একটি আকর্ষণীয় প্রশ্ন, সুতরাং আসুন এটি যেমন হয় তেমনি রেখে দিন: ফোরচ-লুপ এবং ভিতরে একটি অতিরিক্ত শর্ত, অথবা একটি স্পষ্ট লুপের আক্রমণকারী এবং পরে অবস্থার পরে একটি লুপ। দেখে মনে হচ্ছে একটি শর্ত এবং প্রস্থান / বিরতি সহ foreach-loop জিতেছে। আমি ফোরচ-লুপ ছাড়াই একটি অতিরিক্ত প্রশ্ন তৈরি করব (একটি লিঙ্কযুক্ত তালিকার জন্য)।
collection.contains(foo)