Di artikel ini, Anda akan belajar menggunakan pernyataan kontrol sakelar untuk mengontrol aliran eksekusi program Anda.
Pernyataan switch juga merupakan variasi dari pernyataan kontrol Swift egif-else, guard dll, yang melakukan tindakan berbeda berdasarkan kondisi yang berbeda.
Keindahan dari pernyataan switch adalah, ia dapat membandingkan nilai dengan beberapa pola pencocokan yang mungkin. Oleh karena itu, dapat digunakan sebagai pengganti if… else… if
tangga panjang sambil mencocokkan pola yang rumit.
Sintaks pernyataan sakelar
Sintaks dari pernyataan switch adalah:
ganti variabel / ekspresi (nilai kasus1: // pernyataan nilai kasus2: // pernyataan default: // pernyataan)
Bagaimana Pernyataan Switch di Swift bekerja?
- Ekspresi sakelar dievaluasi sekali.
- Ini mengambil ekspresi dan membandingkan dengan setiap nilai huruf dalam urutan (Atas -> Bawah).
- Jika ada kecocokan, pernyataan di dalam case dijalankan dan seluruh pernyataan switch menyelesaikan eksekusinya segera setelah case switch yang cocok pertama selesai.
- Jika tidak ada kecocokan untuk kasus tersebut, maka kasus tersebut jatuh ke kasus berikutnya.
- Kata kunci default menentukan kode yang akan dijalankan jika tidak ada kecocokan huruf.
Catatan : Tubuh setiap kasus harus berisi setidaknya satu pernyataan yang dapat dieksekusi.
Contoh 1: Program sederhana menggunakan Pernyataan Switch
let dayOfWeek = 4 switch dayOfWeek ( case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Ketika Anda menjalankan program di atas, hasilnya adalah:
Rabu
Dalam program di atas, pernyataan switch dimulai dengan mencocokkan nilai dayOfWeek dengan case 1 . Karena nilai dayOfWeek tidak cocok dengan nilai kasus pertama 1, nilai tersebut jatuh ke kasus berikutnya hingga ada yang cocok.
Karena case 4 cocok dengan ekspresi switch, pernyataan print("Wednesday")
di dalam case dijalankan dan case switch berakhir. Jika tidak ada kasus yang cocok, pernyataan di dalam default dijalankan.
Contoh 2: Ganti Pernyataan dengan fallthrough
Jika Anda menggunakan fallthrough
kata kunci di dalam pernyataan kasus, kontrol melanjutkan ke kasus berikutnya meskipun nilai kasus tidak cocok dengan ekspresi sakelar.
let dayOfWeek = 4 switch dayOfWeek ( case 1 : print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") fallthrough case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Ketika Anda menjalankan program di atas, hasilnya adalah:
Rabu Kamis
Dalam program di atas, case 4 mengeksekusi pernyataan print("Wednesday")
dan fallthrough
kata kunci berlanjut ke case5 . Pernyataan print("Thursday")
di dalam case 5 dijalankan bahkan jika case tidak cocok dengan ekspresi switch. Oleh karena itu, Anda dapat melihat keluaran Kamis di konsol.
Contoh 3: Ganti Pernyataan dengan pola yang lebih kompleks
let programmingLanguage = (name: "Go", version: 10) switch programmingLanguage ( case (let name,let version) where (version < 0 && name.count < 0) : print("Invalid input") case ("Swift",let version) where version == 4: print("Found latest version of Swift") case ("Swift" ,… <4 ): print("Found older version of swift)") case ("Swift" ,4… ) : print("Swift version greater than 4 is not released yet") case ("Taylor Swift",30) : print("OMG. This is Taylor swift") case (let name, let version): print(""" Programming Language:(name) Version: (version) Status: Not found """) )
Ketika Anda menjalankan program di atas, hasilnya adalah:
Bahasa Pemrograman: Go Versi: 10 Status: Tidak ditemukan
Dalam program di atas, kami mencocokkan ekspresi bahasa pemrograman tipe tupl dengan kasus yang berbeda seperti di bawah ini:
case (let name,let version) where (version < 0 && name.count < 0)
Kasus ini mengikat nilai ekspresi sakelar ke konstanta atau variabel sementara untuk digunakan dalam isi kasus denganlet
kata kunci. Ini dikenal sebagai pengikatan nilai.
Anda juga dapat menerapkan kondisi ke nilai-nilai tersebut denganwhere
klausa. Untuk beberapa kondisi where, Anda bisa menggabungkannya menggunakan&&
operator seperti pada contoh di atas.
Jika kasus tidak memenuhi kondisi yang ditentukan di dalam klausa where, pernyataan di dalam blok kasus tersebut tidak dijalankan dan gagal untuk membandingkan kasus sakelar berikutnya.case ("Swift" ,… <4 )
Kasus ini mencocokkan elemen pertama tupel dengan string literal"Swift"
dan juga memeriksa apakah elemen kedua berada di dalam rentang satu sisi… <4
.case ("Swift" ,4… )
Kasus ini mencocokkan elemen pertama tupel dengan string literal"Swift"
dan juga memeriksa apakah elemen kedua berada di dalam rentang satu sisi4…
.case (let name, let version)
Kasus ini mengikat setiap nilai tupel ke konstanta atau variabel sementara.