এইটা কাজ করে:
switch (true) {
case liCount == 0:
setLayoutState('start');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount<=5 && liCount>0:
setLayoutState('upload1Row');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount<=10 && liCount>5:
setLayoutState('upload2Rows');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount>10:
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
}
এই উত্তরের পূর্ববর্তী সংস্করণটি প্রথম বন্ধনীটিকে অপরাধী হিসাবে বিবেচনা করেছিল। সত্যিকার অর্থে, প্রথম বন্ধনীগুলি এখানে অপ্রাসঙ্গিক - কেবলমাত্র প্রয়োজনীয় জিনিসটি switch(true){...}
এবং আপনার ক্ষেত্রে বুলিয়ানগুলির কাছে মূল্যায়নের মত প্রকাশের জন্য।
এটি কাজ করে কারণ, আমরা স্যুইচকে যে মান দিয়েছি তা তুলনা করার জন্য ভিত্তি হিসাবে ব্যবহৃত হয়। ফলস্বরূপ, কেস এক্সপ্রেশনগুলি, এবং বুলিয়ানদের মূল্যায়নও নির্ধারণ করবে কোন মামলাটি চালানো হচ্ছে। এটিকেও ঘুরিয়ে দিতে পারে switch(false){..}
এবং পছন্দ করে ও পছন্দসই অভিব্যক্তিগুলি সত্যের পরিবর্তে মিথ্যা হিসাবে মূল্যায়ন করতে পারে .. তবে ব্যক্তিগতভাবে এমন শর্তগুলির সাথে আচরণ করা পছন্দ করে যা সত্যতার কাছে মূল্যায়ন করে। যাইহোক, এটি খুব কাজ করে, তাই এটি কী করছে তা মনে রাখার মতো।
উদাহরণস্বরূপ: যদি liCount 3 হয়, প্রথম তুলনা হয় true === (liCount == 0)
, অর্থাত্ প্রথম কেসটি মিথ্যা। সুইচটি পরবর্তী ক্ষেত্রে চলে যায় true === (liCount<=5 && liCount>0)
। এই অভিব্যক্তিটি সত্যকে মূল্যায়ন করে, যার অর্থ এই কেসটি চালানো হয়, এবং এটিতে সমাপ্ত হয় break
। এটি পরিষ্কার করার জন্য আমি এখানে প্রথম বন্ধনী যুক্ত করেছি, তবে এগুলি আপনার অভিব্যক্তির জটিলতার উপর নির্ভর করে optionচ্ছিক।
এটি বেশ সহজ এবং একটি ঝরঝরে উপায় (যদি আপনি যা করার চেষ্টা করছেন তার সাথে এটি ফিট করে) শর্তগুলির একটি দীর্ঘ সিরিজ পরিচালনা করার, যেখানে সম্ভবত একটি দীর্ঘ সিরিজ ìf() ... else if() ... else if () ...
প্রচুর ভিজ্যুয়াল শোরগোল বা ভঙ্গুরতার পরিচয় দিতে পারে।
সাবধানতার সাথে ব্যবহার করুন, কারণ এটি বৈধ কোড হওয়া সত্ত্বেও এটি একটি মানহীন প্যাটার্ন।