நிறைய நிபந்தனைகளுடன் குறியீட்டை எழுதும் போது, ​​நிச்சயமாக நீங்கள் if-else அல்லது ஸ்விட்ச் ஸ்டேட்மெண்ட்டைப் பயன்படுத்தியிருப்பீர்கள். ஆனால் if-else க்கு இந்த மாற்று குறைபாடுகள் உள்ளன. சிலர் ஸ்விட்ச் ஸ்டேட்மெண்ட்டை "ஆன்டி பேட்டர்ன்" என்றும் அழைத்தனர் .

என்ன அது? எதிர்ப்பு முறை என்பது மோசமான குறியீட்டின் பொதுவான வடிவமாகும், அதாவது ஒரு சிக்கலுக்கு ஒரு மோசமான தீர்வு. புரோகிராமர்கள் குறியீட்டில் அவற்றைத் தவிர்க்க முயற்சி செய்கிறார்கள், ஏனெனில் அவை குறியீட்டின் தரத்தைக் குறைக்கின்றன.

ஆனால் ஒரு நல்ல செய்தி உள்ளது: ஜாவாவின் புதிய பதிப்புகள் மொழியின் தொடரியலில் நிறைய மாற்றங்களைக் கொண்டு வந்துள்ளன, மேலும் அந்த மாற்றங்களில் ஒன்று சுவிட்சைப் பாதிக்கிறது . ஆர்வமா? பிறகு உள்ளே நுழைவோம்.

தொடங்குவதற்கு, சுவிட்ச் ஏன் ஒரு எதிர்ப்பு முறை என்பதை தெளிவுபடுத்துவது மதிப்பு. பின்வரும் குறியீட்டைக் கவனியுங்கள்:


switch (condition) {
    case "DECEMBER":
        seasonNumber = 1;
        break;
    case "JANUARY":
        seasonNumber = 1;
        break;
    case "FEBRUARY":
        seasonNumber = 1;
        break;
    default:
        seasonNumber = 0;
}

சரி, இது ஏன் "எதிர்ப்பு முறை" என்பது இன்னும் தெளிவாகத் தெரியவில்லை.

ஆனால் நாம் கூடுதல் கேஸ் தொகுதிகளைச் சேர்த்தால் என்ன செய்வது , இப்போது குறியீடு இப்படி இருக்கும்:


switch (condition) {
    case "DECEMBER":
        seasonNumber = 1;
        break;
    case "JANUARY":
        seasonNumber = 1;
        break;
    case "FEBRUARY":
        seasonNumber = 1;
        break;
    case “MARCH”:
        seasonNumber = 2;
        break;
    case “APRIL”:
        seasonNumber = 2;
        break;
    case “MAY”:
        seasonNumber = 2;
        break;
    default:
        seasonNumber = 0;
}

இன்னும் சில வரிகளைச் சேர்ப்போம் — குறியீடு நீளமாக வளரும். பின்னர் நாம் மேலும் மேலும் வரிகளைச் சேர்க்கலாம், இதைச் செய்வதிலிருந்து யாரும் நம்மைத் தடுக்க மாட்டார்கள்.

இதுதான் சிக்கலின் மையக்கரு: ஆரம்பத்தில் ஒரு சிறிய சுவிட்ச் அறிக்கையை உருவாக்கிய பிறகு, அதில் மேலும் மேலும் குறியீட்டைச் சேர்ப்போம், மேலும் மேலும் அதிக இடத்தை எடுத்துக்கொள்கிறோம் - திரையில் பொருந்துவதை விட அதிகமாக - மற்றும் குறியீட்டைப் படிக்கவும் பராமரிக்கவும் சிரமமாக மாற்றுகிறோம்.

சுவிட்ச் அறிக்கை மற்றும் சுவிட்ச் வெளிப்பாடு இடையே வேறுபாடு

ஜாவா 14 புதிய மற்றும் மேம்படுத்தப்பட்ட சுவிட்சை அறிமுகப்படுத்தியது. இது ஒரு சுவிட்ச் அறிக்கை அல்ல , மாறாக ஒரு சுவிட்ச் வெளிப்பாடு ஆகும் .

என்ன வித்தியாசம், நீங்கள் கேட்கிறீர்களா? வித்தியாசம் என்னவென்றால், ஒரு அறிக்கை என்பது ஒரு குறிப்பிட்ட செயல்பாடுகளைச் செய்யும் ஒரு அறிவுறுத்தலாகும், ஆனால் ஒரு வெளிப்பாடு என்பது சில கணக்கீடுகளைச் செய்து முடிவை வழங்கும் குறியீட்டின் ஒரு பகுதி.

வேறு வார்த்தைகளில் கூறுவதானால், இப்போது நீங்கள் ஒரு மாறிக்கு மாறுவதன் முடிவைச் சேமிக்கலாம் .

பேசினால் போதும். இப்போது புதிய சுவிட்ச் எப்படி இருக்கிறது என்று பார்ப்போம் :


var result = switch(month) {
     case DECEMBER, JANUARY, FEBRUARY -> 1;
     case MARCH, APRIL, MAY -> 2;
    case JUNE, JULY, AUGUST -> 3;
    case SEPTEMBER, OCTOBER, NOVEMBER -> 4;
    default -> 0; 
};

குறியீடு எவ்வளவு கச்சிதமானது என்பதுதான் உங்கள் கண்ணைக் கவரும் முதல் விஷயம். திரையின் பெரும்பகுதியை ஆக்கிரமித்த குறியீடு இப்போது சில வரிகளை விரித்து, மேலும் படிக்கக்கூடியதாகத் தெரிகிறது.

-> ஆபரேட்டர்

-> ஆபரேட்டர் (அம்பு ஆபரேட்டர்) என்பதையும் நீங்கள் கவனிக்க வேண்டும் . லாம்ப்டா வெளிப்பாடுகளுடன் உங்களுக்கு அனுபவம் இருந்தால் நீங்கள் ஏற்கனவே அதைப் பற்றி நன்கு அறிந்திருக்கலாம்.

அதாவது இப்போது நீங்கள் லாம்ப்டா ஸ்டேட்மென்ட் பாணியில் கூல்-லுக்கிங் ஸ்விட்சை எழுதலாம். அம்பு ஆபரேட்டர், கம்பைலர் அடுத்த கேஸ் எக்ஸ்ப்ரெஷனுக்குச் செல்லாது (தற்போதைய கேஸ் பிளாக்கில் பிரேக் அல்லது ரிட்டர்ன் ஸ்டேட்மெண்ட் இல்லாவிட்டால் ), மாறாக அம்புக்குறியின் வலதுபுறத்தில் உள்ள வெளிப்பாட்டின் மதிப்பை உங்களுக்கு வழங்கும்.

நீங்கள் ஒரு வெளிப்பாடு அல்லாத குறியீட்டை எழுதலாம் மற்றும் எதையும் திரும்பப் பெறுவதற்குப் பதிலாக சில செயல்களைச் செய்யலாம்:


switch(condition) {
    case TRUE, FALSE -> System.out.println("True/false");
  
    default -> System.out.println("Another");
}

சுவிட்சில் இனி இடைவேளை அறிக்கை இல்லை என்பதை நினைவில் கொள்ளவும் . இது ஜாவா 13 இல் அகற்றப்பட்டு விளைச்சலுடன் மாற்றப்பட்டது .

மகசூல் என்றால் என்ன, அதை எங்கு பயன்படுத்தலாம்?

ஒரு சுவிட்ச் ஒற்றை வரியைக் கொண்டிருக்கும் போது , ​​-> ஆபரேட்டரே மதிப்பை வழங்கும். ஆனால் எங்களிடம் ஒன்று இல்லை, ஆனால் பல கோடுகள் இருந்தால் என்ன செய்வது? இதுபோன்ற சந்தர்ப்பங்களில், அம்புக்குறி ஆபரேட்டர் மதிப்பை வழங்காது, ஏனெனில் ஒன்று அல்ல, பல வரிகள் உள்ளன.

ஒருவேளை நாம் திரும்ப பயன்படுத்தலாமா ? எல்லாவற்றிற்கும் மேலாக, ஜாவாவில் மதிப்புகளை வழங்க இது பயன்படுகிறது. ஐயோ, இல்லை, ரிட்டர்ன் சுவிட்ச் மூலம் வேலை செய்யாது. எனவே நாம் எதைப் பயன்படுத்தலாம்? இடைவேளை இருந்தது , ஆனால் அது ஜாவா 13 இல் அகற்றப்பட்டது. ஆனால் அதன் இடத்தில் இப்போது விளைச்சல் உள்ளது - ஒரு சுவிட்சிலிருந்து மதிப்பைத் திரும்பப் பெற உதவும் புதிய முக்கிய சொல். முறைகளில் அறிக்கைகளை வழங்குவதற்கு ஒப்பானது .


var result = switch(condition) {
//…
case "Hi" -> "greeting"
//…
};  

இந்த குறியீட்டில் ஒற்றை வரி உள்ளது, மேலும் -> ஆபரேட்டர் "வாழ்த்து" என்பதை வழங்கும்.

ஆனால் எங்களிடம் குறியீடு தொகுதி இருக்கும்போது:


var result = switch(condition) {
//…
case "Hi" -> {
// Your code
 Here you need to return "greeting"
	}
};  

மதிப்பைத் திரும்பப் பெற உதவும் முக்கிய சொல் விளைச்சல் :


var result = switch(condition) {
//…
case "Hi" -> {
// Your code
 yield "greeting";

	}
};

ஒரு கேஸ் பிளாக்கில் ஒன்றுக்கு மேற்பட்ட கோடு குறியீடுகள் இருந்தால், அதன் முடிவைத் திரும்பப் பெற வேண்டிய சந்தர்ப்பங்களில் ஜாவா 13 இல் விளைச்சல் சேர்க்கப்பட்டது.

உங்கள் குறியீட்டில் புதிய சுவிட்சை முயற்சிக்க நீங்கள் ஆர்வமாக இருக்கலாம் , ஆனால் இதைச் செய்ய உங்களுக்கு ஜாவா 14 அல்லது அதற்கு மேற்பட்டது தேவை என்பதை நினைவில் கொள்ளுங்கள். முந்தைய பதிப்புகளில், கட்டளை வரியில் "--enable-preview" கொடியை நீங்கள் குறிப்பிட்டால் மட்டுமே இந்த சுவிட்ச் கிடைக்கும், ஏனெனில் பதிப்பு 14 க்கு முன்பு இது தொழில்நுட்ப மாதிரிக்காட்சியின் ஒரு பகுதியாக இருந்தது, மொழியின் முழு அளவிலான பகுதியாக இல்லை.

இப்பொழுது இத்துடன் நிறைவடைகிறது! சந்திப்போம்!