Java - Switch Expressions

Helo semua, pemrogram Java masa depan! Hari ini, kita akan menyelam ke salah satu fitur yang paling menarik yang diperkenalkan dalam Java 12 dan dipertingkatkan dalam Java 14: Switch Expressions. Sebagai guru sains komputer yang mesra, saya di sini untuk mengajarimu melalui perjalanan ini, walaupun kamu belum pernah menulis satu baris kod sebelum ini. Jadi, ikutkan rakimu dan mari kita mula!

Java - Switch Expressions

Apa itu Switch Expressions?

Sebelum kita melompat ke switch expressions, mari kitaambil jalan pintas untuk memahami apa itu pernyataan switch. Bayangkan jika kamu di atas rakit penyaji es krim, dan bergantung kepada pilihan rasa kamu, kamu mendapat topping yang berbeza. Itu hampir seperti apa yang dilakukan oleh pernyataan switch dalam pemrograman – ia membolehkan kamu untuk menjalankan kod yang berbeza berdasarkan kondisi yang berbeza.

Kini, switch expressions mengambil konsep ini dan membuatnya lebih kuat dan ringkas. Mereka membolehkan kita untuk menganggap seluruh blok switch sebagai satu ungkapan yang boleh mengembalikan nilai. Ia seperti meningkatkan dari rakit es krim biasa ke es krim sundae premium!

Cara Lama: Pernyataan Switch Tradisional

Mari kita mula dengan pernyataan switch tradisional untuk melihat bagaimana kita melakukan hal ini sebelum ini:

String hari = "MONDAY";
String jenisHari;

switch (hari) {
case "MONDAY":
case "TUESDAY":
case "WEDNESDAY":
case "THURSDAY":
case "FRIDAY":
jenisHari = "Hari kerja";
break;
case "SATURDAY":
case "SUNDAY":
jenisHari = "Hari libur";
break;
default:
jenisHari = "Hari tidak sah";
}

System.out.println(jenisHari);

Dalam contoh ini, kita menentukan sama ada hari adalah hari kerja atau hari libur. Perhatikan bagaimana kita perlu menggunakan pernyataan break untuk mencegah fall-through, dan kita harus mendeklarasikan jenisHari di luar blok switch.

Cara Baru: Switch Expressions

Sekarang, mari kita lihat bagaimana kita boleh mencapai hasil yang sama menggunakan switch expressions:

String hari = "MONDAY";
String jenisHari = switch (hari) {
case "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" -> "Hari kerja";
case "SATURDAY", "SUNDAY" -> "Hari libur";
default -> "Hari tidak sah";
};

System.out.println(jenisHari);

Wah! Lihatlah berapa banyak lebih bersih dan ringkas itu. Kita telah menggabungkan beberapa kasus, menghapuskan pernyataan break, dan menetapkan hasil secara langsung ke jenisHari. Ia seperti membersihkan ruangan kamu – tiba-tiba semua menjadi rapi dan kemas!

Switch Expression Menggunakan Label "case L ->"

Sintaks panah (->) adalah fitur utama switch expressions. Ia membolehkan kita untuk menyediakan cara ringkas untuk menentukan label kasus dan tindakan yang berkaitan dengannya. Mari kita lihat contoh lain:

int nomorHari = 3;
String namaHari = switch (nomorHari) {
case 1 -> "Senin";
case 2 -> "Selasa";
case 3 -> "Rabu";
case 4 -> "Kamis";
case 5 -> "Jumat";
case 6 -> "Sabtu";
case 7 -> "Ahad";
default -> "Nomor hari tidak sah";
};

System.out.println("Hari " + nomorHari + " adalah " + namaHari);

Dalam contoh ini, kita mengubah nomor hari ke nama hari yang berkaitan. Sintaks panah membuat setiap kasus menjadi satu baris yang mudah dibaca. Ia seperti tanda arah yang menunjuk langsung ke jawapan yang betul!

Switch Expression Menggunakan Pernyataan "case L:" dan Pernyataan "yield"

Kadang-kadang, kamu mungkin perlu melakukan lebih daripada hanya mengembalikan nilai yang sederhana dalam ungkapan switch kamu. Itulah di mana pernyataan yield menjadi berguna. Ia seperti mengatakan, "Saya sudah selesai dengan kalkulasi saya, ini adalah jawapan akhir!"

Mari kita lihat contoh:

int bulan = 8;
String musim = switch (bulan) {
case 12, 1, 2:
yield "Musim Sejuk";
case 3, 4, 5:
yield "Musim Semi";
case 6, 7, 8:
yield "Musim Panas";
case 9, 10, 11:
yield "Musim Gugur";
default: {
String pesan = "Bulan tidak sah: " + bulan;
System.out.println(pesan);
yield "Tidak diketahui";
}
};

System.out.println("Musim untuk bulan " + bulan + " adalah " + musim);

Dalam contoh ini, kita menentukan musim berdasarkan bulan. Perhatikan bagaimana kita menggunakan yield untuk mengembalikan nilai, khususnya dalam kasus default di mana kita melakukan beberapa pemrosesan lebih.

Penggunaan Lanjutan: Ungkapan dalam Label Kasus

Salah satu fitur yang paling keren tentang switch expressions adalah kamu boleh menggunakan ungkapan dalam label kasus. Ia seperti memberikan pernyataan switch kamu superkekuatan! Ini adalah contoh:

record Orang(String nama, int umur) {}

Orang orang = new Orang("Alice", 25);

String tahapHidup = switch (orang) {
case Orang o jika o.umur() < 13 -> "Anak";
case Orang o jika o.umur() >= 13 && o.umur() < 20 -> "Remaja";
case Orang o jika o.umur() >= 20 && o.umur() < 60 -> "Dewasa";
case Orang o jika o.umur() >= 60 -> "Wanita";
default -> "Tidak diketahui";
};

System.out.println(orang.nama() + " adalah seorang " + tahapHidup);

Dalam contoh ini, kita menggunakan record (fitur Java yang keren lain) untuk mewakili seseorang, dan kemudian menggunakan switch expressions dengan kondisi kompleks untuk menentukan tahap hidup mereka. Ia seperti memiliki juru masanya pribadi di kode kamu!

Kesimpulan

Switch expressions adalah alat yang kuat dalam Java yang dapat membuat kod kamu lebih dapat dibaca, ringkas, dan kurang error. Ia seperti meningkatkan dari ponsel lipat ke ponsel pintar – tiba-tiba, kamu boleh melakukan banyak lagi dengan sedikit usaha!

Ingat, pemrograman adalah tentang praktek. Jadi, jangan takut untuk bereksperimen dengan konsep ini. Cobalah untuk membuat switch expressions kamu sendiri, mainkan beberapa senario yang berbeza, dan yang paling penting, bersenang-senanglah dengan itu!

Sebagai penutup, di sini adalah tabel ringkasan tentang metode utama yang kita diskusikan:

Method Keterangan
-> Sintaks panah untuk label kasus dan tindakan yang ringkas
yield Pernyataan untuk mengembalikan nilai dari ungkapan switch
case L when condition Pematching pola dalam label kasus

Selamat coding, dan may your switches always express themselves clearly!

Credits: Image by storyset