Nalika nulis kode kanthi akeh kahanan, mesthine sampeyan wis nggunakake pernyataan yen-liyane utawa switch . Nanging iki alternatif kanggo yen-liyane wis drawbacks. Sawetara wong malah nyebut statement switch minangka "anti-pola".

opo iku? Anti-pola minangka pola umum kode ala, yaiku solusi sing ala kanggo masalah. Programer nyoba ngindhari kode kasebut, amarga ngrusak kualitas kode.

Nanging ana kabar apik: versi anyar Jawa wis nggawa akèh owah-owahan ing sintaks basa, lan salah siji saka owah-owahan sing mengaruhi switch . Penasaran? Banjur ayo padha nyilem.

Kanggo miwiti, kudu njlentrehake kenapa switch minangka anti-pola. Coba kode ing ngisor iki:


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

Oke, dadi durung jelas kenapa iki minangka "anti-pola".

Nanging apa yen kita nambah blok cilik lan saiki kode katon kaya iki:


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;
}

Ayo ditambahake sawetara baris maneh - kode tambah suwe. Mengko kita bisa nambah liyane lan liyane garis, lan ora ana siji bakal mungkasi kita nindakake iki.

Iki jantung masalah: sawise pisanan nggawe statement ngalih kompak, kita nambah liyane lan liyane kode menyang, njupuk munggah liyane lan liyane papan - luwih saka bakal pas ing layar - lan nggawe kode ora trep kanggo maca lan njaga.

Bedane antarane statement switch lan ekspresi switch

Jawa 14 ngenalaken ngalih anyar lan apik. Iki dudu statement switch , nanging ekspresi switch .

Apa bedane, sampeyan takon? Bentenipun punika statement punika instruksi sing nindakake pesawat tartamtu saka operasi, nanging expression Piece saka kode sing performs sawetara pitungan lan ngasilake asil.

Ing tembung liyane, saiki sampeyan bisa nyimpen asil ngalih menyang variabel.

Cukup ngomong. Saiki ayo ndeleng kaya apa saklar anyar :


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; 
};

Wangsulan: Bab ingkang pisanan sing narik kawigaten sampeyan yaiku carane kompak kode kasebut. Kode sing biasane njupuk akeh layar saiki kalebu sawetara baris lan katon luwih gampang diwaca.

-> operator

Sampeyan uga kudu nyatet operator -> (operator panah). Sampeyan bisa uga wis ngerti yen sampeyan duwe pengalaman nganggo ekspresi lambda.

Tegese saiki sampeyan bisa nulis saklar sing katon apik ing gaya statement lambda. Operator panah nuduhake yen compiler ora bakal nerusake kanggo expression cilik sabanjuré (yen pamblokiran cilik saiki kurang break utawa bali statement), nanging bakal menehi Nilai saka expression ing sisih tengen panah.

Sampeyan uga bisa nulis kode sing dudu ekspresi lan mung nindakake tumindak tartamtu tinimbang ngasilake apa wae:


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

Elinga yen switch ora ana maneh statement break . Iki dibusak ing Jawa 13 lan diganti karo ngasilaken .

Apa asil lan ing ngendi bisa digunakake?

Nalika saklar kasusun saka baris siji, operator -> dhewe ngasilake regane. Nanging apa yen kita ora duwe siji, nanging akeh baris kode? Ing kasus kasebut, operator panah ora bakal ngasilake nilai, amarga ana sawetara garis, ora siji.

Mungkin kita bisa nggunakake bali ? Sawise kabeh, digunakake kanggo ngasilake nilai ing Jawa. Alas, ora, bali ora bakal bisa digunakake karo saklar. Dadi apa sing bisa kita gunakake? Biyen ana break , nanging sing wis dibusak ing Jawa 13. Nanging ing panggonan kita saiki wis ngasilaken — tembung kunci anyar sing mbantu sampeyan bali Nilai saka saklar. Iku analog kanggo bali statements ing cara.


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

Kode iki ngemot siji baris, lan operator -> bakal bali "salam".

Nanging nalika kita duwe blok kode:


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

Tembung kunci sing bakal mbantu sampeyan ngasilake nilai yaiku ngasilake :


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

	}
};

ngasilake ditambahake ing Jawa 13 kanggo kasus sing duwe luwih saka siji baris kode ing blok cilik lan kita kudu ngasilake asil.

Sampeyan bisa uga pengin nyoba ngalih anyar ing kode sampeyan, nanging elinga yen sampeyan butuh Java 14 utawa luwih dhuwur kanggo nindakake iki. Kanthi versi sadurungé, switch iki mung kasedhiya yen sampeyan nemtokake gendera "--enable-preview" ing baris printah, amarga sadurunge versi 14 iku bagéan saka pratinjau teknis, dudu bagean lengkap saka basa.

Sing kabeh kanggo saiki! Sampai jumpa!